Skip to main content
 首页 » 资源教程

优化UE4在VR中的渲染效率的新方法

2016年08月27日 10:44:284560

优化UE4在VR中的渲染效率的新方法 资源教程 第1张

对于Farlands, Oculus 团队为 Unreal Engine 撰写了一个实验性,快速,单程的渲染器。这个渲染器同时也可用于 Dreamdeck 和 Oculus Store 版本的发布。我们现在分享一下这个渲染器的源码示例,以此帮助开发人员使自己的应用程序达到更高的质量水平和帧速率。从今天开始,你可以从https://github.com/Oculus-VR/UnrealEngine/tree/4.11-ofr获得有关信息。

以稳定的 90 赫兹呈现身临其境的虚拟现实世界是复杂的且在技术上极具挑战性的。制作虚拟现实内容,在很多方面上与使传统的主机显示内容是不同的。它给我们带来了各种效果惊人的交互和体验,同时促使开发人员重新思考各种建设,构想出新技术。最近一波的虚拟现实浪潮展示了这个行业的新机遇和开发者的创造力。

我们目前的工作是重新评估的一些传统的关于虚拟现实渲染的假设,并且开发技术来帮助我们提供90赫兹的高保真内容。现在,我们来分享一些成果:为Unreal Engine 4.11打造的尚处试验阶段的正向渲染器。

我们开发了Oculus Unreal 渲染器,其构想来源于解决虚拟现实呈现的约束。借此我们能够更容易地创造高保真,高性能的用户体验,我们渴望与所有UE4开发人员分享这一成果。

背景

当团队开始在Farlands生产时,我们花时间反思了一下我们从之前在Oculus Connect, GDC, CES上发布的演示版本中学到了什么。我们只用Unreal Engine 4创建这些内容,而这些内容为我们提供了一个令人难以置信的编辑环境和丰富的高级渲染功能。

不幸的是,现实中Rift眼镜的呈现意味着我们只能够使用这些特性的一部分。我们希望检查那些我们最常使用部分,看看我们是否可以设计一个精简的能带来更高的性能和更卓越的视觉保真度的渲染器,同时能够让团队继续使用UE4世界级别的编辑器和引擎。虽然大家的关注点都在 Oculus Unreal 渲染器应用程序的用例上,它被改造成预先存在的项目(包括 Showdown 和 Oculus Dreamdeck)无需主要的工作内容。在这些情况下,它提供清晰的视觉效果,释放足够的GPU来增强附加功能或增将分辨率提高15 - 30%。

优化UE4在VR中的渲染效率的新方法 资源教程 第2张

高分辨率比较Oculus Unreal 渲染器在90 fps条件下运行而Unreal的虚幻的默认延迟渲染器在60 fps条件下运行。

延迟虚拟现实面临的麻烦

Unreal Engine以其高端渲染特性和保真度而闻名。那么,我们能够以何种理由令其为变虚拟做出改变?这其中的原因主要归结为制作虚拟现实内容的过程以及其在显示器和Rift头盔上工作的差别。

在测试我们为Rift 设计的演示版本时,我们发现大部分着色器都是相当简单的,并且主要依赖于详细的没有很多lookup函数和算术的结构。当加上一个延迟渲染器之后,这意味着我们GBuffer关口有了结构限制----我们读取了大量的结构,编写了GBuffers,在这期间没有做太多工作。

我们同样也使用了动态照明和部分阴影,并且加强了预先计算的照明。在实践中,切换到渲染器为我们提供的特点非常有限,我们尽量更好地利用GPU,加强优化,取消带宽上限,让我们更容易达到90赫兹。

我们也想对硬件加速多试样图像保真 (MSAA)和Unreal的时间图像保真 (TAA)做一个比较。TAA在显示器渲染方面表现的非常出色,而且对于延迟渲染是一个很好的搭配,在虚拟现实中,但它会暴露明显人工痕迹。尤其是它可能会导致头部运动时图像的颤抖和几何混叠。很明显,如果用我们自己的结构和着色器或者顶点动画技巧,情况可能会更糟。但这些问题主要是虚拟现实头盔的功能缺陷。

与显示器相比,Rift眼镜的覆盖了观众更大一部分视野。一台常规的显示器比虚拟现实头盔的像素高10倍。Oculus SDK接收的图片同样也通过一个额外的采样来补偿耳机的光学作用。这个额外的滤镜可以进一步优化图像。

所有这些因素结合起来促使我们尽可能多的保护图像的细节。我们发现MSAA能产生我们喜欢的那种更清晰,更详细的图片。

优化UE4在VR中的渲染效率的新方法 资源教程 第3张

延期与正向的比较。放大观察

正向效果更佳

当前最先进的渲染通常是利用空间效果,比如空间环境闭塞(SSAO)和屏幕反射(SSR)。这些都因为其较高的现实性和高质量的视觉冲击而为人熟知,但他们在虚拟现实街的权衡却并不理想。在屏幕空间的单纯操作可能会引发错误的立体差异(每只眼睛显示的图像都有差异),所以一些用户会觉得不舒服。伴随这些效果的代价是我们开始习惯这些功能的特点。

我们采用正向渲染器决定是多方面考虑之后的结果。至关重要的是正向渲染器让我们能够使用MSAA来抵抗失真。为我们结构复杂的着色器增加了算法 (删除了GBuffer),消除可能会干扰异步时空传递的昂贵的全屏幕显示总体来说---使我们在结构性延迟加速器上有了适度的加速。正向渲染器的切换还允许更方便的单项背景渲染,可以提供巨大的在标题、复杂图像方面的提升。然而,这些优势同样需要牺牲,而且并不是所有人都愿意接受。我们的目标是和虚拟现实开发人员分享我们的经验,继续努力让世界级别的内容在90赫兹下工作。

我们的应用是基于 Ola Olsson 2012 HPG 论文,集群延迟和正向渲染(Clustered Deferred and Forward Shading)。熟悉传统正向渲染的读者在使用这种渲染器时可能会更关心CPU和GPU而不是动态光。幸运的是,现代方法解决正向照明不需要额外的渲染通知:所有的图形和光都是一次展示 (有一个可选的z-prepass)。通过使用计算着色器来预先计算灯光影响的3d场景可以使其成为可能。使用这些数据,每个像素都可以确定光的列表空间联合性,并执行一个可以提升 GPU 效率的照明回路。这保证了更准确的删除和有效地处理极少的动态光,不需要额外的不需要额外的渲染通知。

优化UE4在VR中的渲染效率的新方法 资源教程 第4张

可视化的三维网格,显示照明连贯和剔除

除了渲染器,我们也修改了UE4,优化了GPU和CPU。渲染器提供一个无需维护的样本和一个并不是官方支持的SDK,但我们仍然很兴奋能为大家提供一个使用世界级引擎Unreal Engine的项目,为呈现虚拟现实世界提供更多选择。


评论列表暂无评论
发表评论