研发实践:Unity LWRP正式支持Oculus Quest开发

砍柴网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

来源:映维网  作者  颜昳华

Unity的Lightweight Render Pipeline (LWRP)已经正式支持Oculus应用,主要是Quest。本文将概览这一框架,最佳实践,以及在使用Lightweight Render Pipeline时的关键技巧。

1. 什么是Lightweight Render Pipeline(LWRP)?

LWRP是Scriptable Render Pipeline (SRP)的一部分。SRP允许开发者自定义渲染管道的特定细节,利用C#脚本。在以前,诸如不透明和透明渲染通道的顺序和属性等细节都是完全隐藏或通过一个简单的复选框公开。利用SRP,你可以通过合适的C#代码进行微调。

利用LWRP,你可以通过代码自定义细节。

研发实践:Unity LWRP正式支持Oculus Quest开发

LWRP恰好是使用SRP构建的渲染管道的特定示例。它是从零构建,使用的渲染技术在各种硬件上都表现出色,尤其是Oculus Quest这样的 VR 一体机

2. 使用LWRP的好处

LWRP适合所有图形专业知识水平的开发者。对于缺乏经验,同时又不寻求这种灵活性的人员,你可以简单地使用LWRP,无需进行任何修改。对于渴望利用自定义优势的高级图形开发者,建议你下载LWRP软件包源代码,对其进行修改并在项目中使用。

3. 项目+着色器升级

Oculus在Unity build documentation for PC和Unity documentation for Android文档中提供了有关升级过程的全面综述。重要的一点是,如果仅使用Unity内置着色器,你将可以轻松升级到LWRP着色器。LWRP具有一组统一的着色器,而每个内置着色器都与之关联。另一方面,如果你使用的是自定义着色器,你可能需要重写它们才能结合LWRP使用。

4. 图形性能

LWRP使用单通道正向渲染器,其中光在单通道中着色。对于Oculus设备,这同时需要通过一个共享的绘制调用来渲染每只眼睛。与多通道相比,这大大降低了CPU负载。

升级到LWRP之后,只要设置与以前的内置RP项目的设置相同,性能应与之前大致相同。在某些测试案例中,使用LWRP甚至可以改善性能。如果在相同设置下性能不佳,请使用Unity的错误报告工具提交错误。

5. 使用LWRP的最佳实践

尽管LWRP为VR开发工作流程提供了更高的灵活性和自定义功能,但这同时意味着有更多机会出错,尤其是在性能方面。

将LWRP与Oculus Quest配合使用时,中间纹理渲染会占用大量GPU资源。请记住,使用Unity的后处理堆栈时需要中间纹理。所以,Oculus建议开发者在为Oculus Quest开发内容时不要使用LWRP的后处理功能,除非你确定给定功能依然可以达到足够的性能。如果在Quest应用程序中使用专门的后处理通道,大多数开发者都无法达到帧速率。

一种验证是否性能最高的途径的方法是,使用Renderdoc。“Render Opaques”,“Render Transparents”和其他关联的通道都应具有Oculus运行时分配的交换链纹理的输出,如下所示:

研发实践:Unity LWRP正式支持Oculus Quest开发

研发实践:Unity LWRP正式支持Oculus Quest开发

这个RTDeviceEyeTextureArray0是交换链纹理,而这个示例说明了最佳性能,因为它表示系统正在直接对交换链纹理执行渲染,无需使用中间纹理。如前所述,从GPU资源的角度来看,这种中间纹理的负载非常昂贵。如果某个应用改为渲染中间纹理,然后执行从blit通道,则它不是采用性能最高的路线。调试LWRP性能问题的其中第一步是,验证不存在这种blit 通道。

请参阅下面的屏幕截图示例,其中提供了一系列的最佳实践,包括关闭HDR和4x MSAA。

注意:Unity的默认LWRP模板当前包含的设置将强制使用中间纹理,并因此大大降低性能。会这样做的技术示例包括:camera HDR,后处理,运动矢量传递等等。如果你采用这个示例,并且要在Oculus Quest实现足够的性能,你就必须进行适当的修改并关闭所述功能。使用Renderdoc是进行验证的好方法。

6. 已知问题

遗憾的是,现在当你选择线性颜色空间或修改眼睛纹理分辨率标度时,系统会采用上述的中间纹理。开发团队已经在着手修复,并将很快通过Unity Engine和LWRP版本中得到修复。

7. 展望未来

从Unity 2019.3起,LWRP将有一个新名称:Universal Render Pipeline(URP)。在过渡期间API保持不变。所以如果你是从2019.3开始,则只需使用URP。本文关于LWRP的所有内容同样适用于URP。

Unity的Scriptable Render Pipeline为所有技能和经验水平的开发者带来了众多好处。当尝试获得渲染管道的更多底层访问权限时,它的可扩展性非常有用。在频谱的另一端,Lightweight Render Pipeline可以直接予以使用,无需进行任何修改。

原文链接:https://yivian.com/news/68937.html

随意打赏

提交建议
微信扫一扫,分享给好友吧。