在Unity 2019.3中,轻量级渲染管线LWRP正式升级为通用渲染管线Universal Render Pipeline。
轻量级渲染管线LWRP设计的目标是具有快捷、可扩展的优点,可为所有移动设备带来高质量的图形效果。轻量级渲染管线LWRP可用于正式制作流程,在过去的一年中,我们不断为其增添功能与多平台支持,提升性能。
在Unity 2019.3中,轻量级渲染管线LWRP升级为了通用渲染管线。与其前身一样,通用渲染管线是提供精美图像和高性能的强大的解决方案,同时支持多个平台,可一次开发,多平台部署。
通用渲染管线支持最新的艺术创作工具,适用于2D、3D、虚拟现实VR和增强现实AR项目。
支持平台
下图是通用渲染管线支持的平台,且数量仍在不断增长。
使用通用渲染管线的优点
下面是使用通用渲染管线的优点:
-
适用于正式制作流程。
-
只需开发一次,即可在任何Unity支持的平台上部署。
-
制作2D、3D、XR等各种项目的理想方案。
-
提供专为艺术家设计的专业工具,包括:Visual Effect Graph、Shader Graph、Render Passes。
-
Unity项目未来的默认渲染方式。
-
通用渲染管线将支持Unity 2019.4 LTS版。
升级中的注意事项
通用渲染管线是LWRP的延续,只是更改了一个新名称。对创作者而言,从LWRP向通用渲染管线的转换并不会造成任何不便,原使用LWRP的项目几乎可无差别转换为通用渲染管线项目。
LWRP的自定义渲染效果和着色器也会自动升级到通用渲染管线。但如果在自定义着色器使用了Shader.Find或UserPass,必须手动升级着色器路径。
在升级到通用渲染管线时,后期处理效果也将一并升级。现在后期处理功能已经整合到了管线中,并且其性能将比后期处理特效包Post-Processing Stack V2更强,体验会更优秀。
但需要注意:后期处理功能目前仍不支持自定义特效,我们计划在未来添加这项支持。
在通用渲染管线中,后期处理效果的功能将包括抗锯齿、景深、动态模糊、帕尼尼投影、泛光、镜头畸变、色差、颜色分级、色调映射、晕影、胶片颗粒和8位抖动。
后续,我们将发布LWRP到通用渲染管线的升级指南。
下图是一些通用渲染管线的后期效果展示。
升级内置渲染管线的原因
通用渲染管线具有更多的可拓展性
Unity的内置渲染管线能够让开发者选择正向或延迟渲染路径,其拓展方法是在管线的具体事件中插入命令缓冲区。但我们便不能添加自定义的渲染策略,而拓展现有策略也会受制于插入点。
通用渲染管线引入了渲染器的概念,渲染器将实现成套的功能和光照策略,这样便为管线增添了可拓展性。
在Unity 2019.3中,通用渲染管线将带有正向渲染器,可在单通道中对所有光照着色,并提供一个支持实时光照等多种光照类型的2D渲染器。优化的延迟渲染器将在不久后推出。
在设置项目时,开发者可以在管线资源中声明一个渲染器列表,每个摄像机将根据这个列表使用渲染器。
如下图所示,左图为包含渲染器列表的管线资源,右图为摄像机选择渲染器。
开发者可以使用一些渲染策略,例如:基于Tile/Cluster的渲染,创建自己的渲染器来扩展管线。
在通用渲染管线上实现自定义渲染器时,我们不需要从头开始创建自定义渲染管线,通用渲染管线将提供许多渲染模板,渲染器可以实现“即插即用”。
你还可以使用其它渲染器功能扩展渲染器,这些功能是包含资源和逻辑的可编程对象,可以插入到渲染器的渲染通道中。每个功能可以在渲染器的特定事件上插入一个或多个渲染通道。通用渲染管线包含通用的RenderObjects渲染对象功能,提供高度自定义效果。
你可以在渲染器中将其添加到“Renderer Features”渲染器功能列表中。用户也可以创建自定义功能,通用渲染管线提供了创建功能的编程模板,请点击菜单在Asset -> Create -> Rendering -> Universal Render Pipeline寻找。
了解更多关于扩展通用渲染管线的内容,请访问自定义渲染功能示例:
https://github.com/Unity-Technologies/LWRP-CustomRendererExamples/
如下图所示,左图中FPSSetup是一种包含了额外渲染功能的正向渲染器。右图,我们单击“+”键可以为渲染器添加功能。
通用渲染管线拓展性实例
Crest Ocean是Asset Store资源商店中一款优质插件,其开发团队使用通用渲染管线制作出逼真的海洋效果。
此前要实现这种特效十分困难,但现在我们可以省去从零开始编写渲染器的麻烦,极大提升渲染效果。
下载Crest Ocean:
https://assetstore.unity.com/packages/tools/particles-effects/crest-ocean-system-lwrp-141674
通用渲染管线的性能优点
通用渲染管线与此前的内置渲染管线相比更为精简,质量更高。将内置渲染管线项目升级到通用渲染管线时,效果不但不会缩水,而且性能会有所提升。
我们将Polygon Farm资源包从内置渲染管线升级到了通用渲染管线,确保升级前后两个项目的质量和渲染设置完全一致,然后在iPhone 6S上比较两者的视觉和性能效果。
下载Polygon Farm资源包:
https://assetstore.unity.com/packages/3d/environments/industrial/polygon-farm-pack-146192
如下图所示,使用通用渲染管线,项目能够在视觉效果相同的情况下拥有更高的帧率。
下图为使用通用渲染管线的性能表现。
下图为使用内置渲染管线的性能表现。
下表是具体对比数据情况。
Draw Call上的差距是因为通用渲染管线并不需要为额外的光照渲染Draw Call。Batch中的差距是因为通用渲染管线会在每个着色器上进行批处理,而内置渲染管线则会在每个材质上进行处理。
类别
通用渲染管线
内置渲染管线
CPU耗时
12.9ms
20.6ms
GPU耗时
16.6ms
22.6ms
Draw Call
978
1314
Batch
103
976
带宽
50.6MB
117MB
如果升级项目后并没有明显的性能提升,请检查两个管线间的质量设置是否相同。通用渲染管线控制管线资源中质量的方方面面,根据每个质量设置单独设置管线资源。
使用通用渲染管线,我们可根据不同的平台调整图像质量,同时也能够集中控制所有管线资源的质量设置。而使用内置渲染管线,各项设置则散布在Quality Settings质量设置和Graphics Tiers图形层级上。
当项目转换到通用渲染管线上时,原先项目的设置并不会自动升级,我们需要手动升级质量设置。如果转换后项目的画面品质相同,但性能却更低了,请在务必提交错误报告,以便我们查找原因。
如下图所示,我们可根据各个质量设置分别指定渲染管线资源。
通用渲染管线的未来
我们将持续改进通用渲染管线,带来Visual Effect Graph、Shader Graph、Custom Render Passes及最新Post-Processing后期处理功能的各种便利,实现更好的图像质量与性能,且只需一次开发,便可在大量的平台上部署。
在2020年,我们将加入内置渲染器的对应功能,包括:延迟渲染器和镜头堆叠。你将能够以不同的方式在项目中使用相同的功能。
在开发可编程渲染管线时,我们也重新设计了渲染系统,随着我们开发出更好的替代功能,原先的部分功能会被弃用,而通用渲染管线中发生变更的部分有渲染回调,GrabPass和镜头堆叠。
除了改进功能,我们还在不断提升了性能。在相同的质量设置下,和之前的渲染方案相比,通用渲染管线在大多数情况下有相同甚至更好的性能表现。
在2021年,我们希望在确保所有支持平台性能稳定的前提下,将通用渲染管线的功能拓展到高级移动端及主机平台上。
通用渲染管线和高清晰渲染管线
通用渲染管线将不会取代或包含高清晰渲染管线HDRP。
我们计划将通用渲染管线作为未来Unity的默认渲染管线,一次开发,便可随处部署。它比内置渲染管线更灵活、更可拓展并提供更好的性能,且提供更优质的图形质量。
HDRP则用于制作顶级图形效果,如果你有明确的目标,想在高端硬件上极力展现具有高性能的高保真度视觉效果,HDRP将是你的不二之选。
最后,根据自己项目的功能和平台需求来选择合适的渲染管线。
小结
通用渲染管线已经可供正式使用,快来使用升级工具升级项目,或使用Unity Hub上的Universal通用模板来创建新项目吧。
如果你有任何反馈,请访问Unity官方通用渲染管线论坛:
https://forum.unity.com/forums/universal-render-pipeline.383
下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方。
你可以访问Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:
Connect.unity.com/g/discussion