(翻译)LWRP:优化实时表现

发布于 21 天前  10 次阅读


本篇内容为Unity官方博客的翻译整理。
原文链接
日期:2018年2月21日
作者:Tim Cooper
翻译:咲夜詩


序言:最近我们介绍了SRP的概念。简单来说SRP让开发者能用C#控制每一帧如何渲染。
在2018.1中我们会提供2套内置的渲染管线:LWRP和HDRP。
本篇文章中我们聚焦LWRP。

通过将渲染暴露给C#层,我们的目标是使Unity不再是黑盒子,并使开发者能明确控制渲染过程中发生的事情。
开发人员可以使用我们提供的内置管线,从头开发自己的管线或修改其中一个管线以满足自己特殊需求。
我们发布了一个视频用于概述SRP概念,包括一些使用各种管道的项目镜头。
https://youtu.be/2wUPgl7upnU

LWRP的目标是通过在照明和着色方面进行一些权衡,在性能受限的平台上提供优化的实时性能。

LWRP的目标受众是面向广大移动平台、VR的开发人员,以及对实时照明需求有限的游戏开发人员
LWRP使用单pass的向前渲染,只有一个光实时造成阴影+逐物体的light culling(光照剔除,决定光源影响到哪些像素),其优点是所有灯光都在一次通过中着色。
传统的管道的向前渲染中,在像素光源限制内每增加一个像素光源都增加一个pass进行处理。
使用LWRP将减少draw call,这是以牺牲在多光源多pass下的复杂性为代价的。
LWRP支持Shader Graph,这将为着色器创作工作流程提供一些额外的好处。

LWRP的Shader

LWRP中有其独立的渲染流程和shader写法。
我们提供了一套标准shader在"Lightweight Pipeline"这个组,包括利用到了简单光照模型的Standard PBR/Non PBR Standard,还有Standard Terrain和Standard Unlit。
需要注意的是,已有的unlit shader兼容LWRP,包括legacy particles、UI、skybox、sprite等的shader。

LWRP提供已有lit shader的升级功能,Edit -> Render Pipeline -> Upgrade -> Lightweight。

注:材质升级

Render Pipeline Asset

应用渲染管线设置需要在Graphics设置中的Scriptable Render Pipeline设置中指定Render Pipeline Asset。也可以通过GraphicsSettings.renderPipelineAsset属性在脚本中进行指定。

除了选择一个渲染管线用于定义项目的整体渲染,还可以保存同一个渲染管线的多个画面质量设置。
Render Pipeline Asset控制全局渲染的画面质量设置,并负责创建管线的实例。
管线的实例包括中间资源和渲染循环的实现。

Lightweight Rendering

LWRP的渲染特性主要是内置渲染的子集。
为了提高在性能受限的平台上的表现,刻意剔除了某些功能。
Unity提供了广泛的工具和技术来应用于游戏,其风险在于有时会使用错误的技术在没有可用资源情况。
提供专用渲染管道作为模板的目的是减轻用户在性能方面犯下某些可能代价高昂的错误的可能性。

例如,为目标平台部署不适当的后期处理效果可能会使设备上的游戏变慢,即使这些效果在Unity中受支持并且可能在适当的目标平台上能正确执行。

实时全局照明(Realtime global illumination/GI)是LWRP目标平台上很少使用的功能的另一个示例,因此已被删除。
唯一支持的渲染路径是单pass向前渲染,它将使性能的优先级高于渲染复杂性。

下表提供了有关built in/LWRP支持的技术类型:




自定义渲染管线

SRP架构令人难以置信的潜力在于它比内置渲染更加开放和可定制。
如果要访问LWRP的源代码,请查看SRP的github页面。
在那里,您可以获取LWRP的C#源代码并开始进行修改以创建一个特别适合您的项目的管道


关注成长,注重因果。