Notifications
Article
轻量级渲染管线:优化实时性
Published 9 months ago
378
0
本文我们将聚焦轻量级渲染管线或LW RP
在《可编程脚本渲染管线SRP》中我们介绍了可编程渲染管线 (简称SRP)。简单的说SRP允许开发者使用C#控制Unity渲染帧的方式。在Unity 2018.1中,我们为用户提供了轻量级渲染管线(Lightweight Pipeline)和高清晰渲染管线(HD Pipleline)二个渲染管线。它们不仅可以直接使用,也可以作为开发者构建自定义渲染管线的参考。在本文中,我们将聚焦轻量级渲染管线或LW RP。
SRP演示项目,请访问Github:
https://github.com/stramit/SRPBlog/tree/master/SRP-Demo
SRP及LW RP介绍
我们希望通过将渲染管线暴露给C#,使Unity更加透明,让开发者能够显式地控制渲染过程。开发者可以使用我们提供的内置管线,从零开始开发自定义的管线,或者根据需求对现有的管线进行修改。
下面视频是对可编程渲染管线简要概述,其中包括展示了一些使用不同管线制作的短片片段:
LW RP的目标是通过在光照和阴影方面采取一些折衷手段,优化性能受限的平台上的实时性能表现。LW RP的目标受众是那些将目标平台定位于大范围移动平台、VR,以及低实时光照需求的游戏及应用开发者。
LW RP使用一个实时阴影光源执行单程正向渲染,并逐个对象进行光照剔除,这得益于所有光照均在单程内着色完毕。传统管线正向渲染会对范围内的每个像素光源执行一次额外的绘制。与之相比,使用LW管线则会减少绘制调用的数量。相应的代价是,由于每次绘制增加的光照数量而造成的额外着色器复杂度。
Shader Graph着色器视图工具也支持LW RP,它能在着色器创作工作流程方面提供一些额外的便利。
轻量级着色器
LW RP有自己的渲染流程,因此编写相关着色器时需要谨记这点。我们开发了一组新的标准着色器(Standard Shader),位于材质的着色器下拉列表框的Lightweight Pipeline组之下。其中包括一个标准PBR(Standard PBR)着色器,一个非标准PBR(Non PBR Standard)着色器,一个标准地形(Standard Terrain)着色器,以及一个标准无光照(Standard Unlit)着色器。值得注意的是,所有Unity的现有无光照着色器都与LW RP兼容。包括传统粒子、UI、天空盒以及精灵着色器。
轻量级管线还提供了材质升级器,用于升级Unity的现存光照着色器,使之与管线兼容。要升级材质,请点击到Edit -> Render Pipeline -> Upgrade -> Lightweight。你可以选择升级项目中的所有材质或仅升级选中的材质。
渲染管线资源
要选择当前渲染管线,可以在Graphics Settings窗口的Scriptable Render Pipeline Settings中指定一个管线资源,或者通过脚本为GraphicsSettings.renderPipelineAsset赋值。
除了在外部通过选择一个管线为你的项目定义总体渲染方式外,还可以在同类渲染管线的不同实例中存储多个质量设定。管线资源控制全局渲染质量,负责创建管线实例。管线实例包含中间资源和渲染循环实现。
轻量级渲染
LW RP渲染功能主要是内置渲染器的一个子集。为了提升性能受限平台上的表现,故意去除了某些特定功能。Unity提供了大量的工具和技术,帮助开发者进行游戏开发。但风险是,有时可能会为某个游戏选择了不具有相应支撑资源的错误技术。提供专门的渲染管道作为模板的目的是减少用户在性能方面犯某些可能代价高昂的错误的可能性。例如在某个目标平台上部署了不合适的后期处理效果,可能会导致游戏在某个设备上运行变慢,即使Unity本身支持那些效果,而这些效果可能在合适的目标平台上运行得也不错。
实时全局光照是另一个几乎不会在LW RP的目标平台上使用的功能例子,因此也被移除。唯一支持渲染路径是单程正向渲染,这是另一个性能优先于渲染复杂度的选择。
下表详细列出了内置管线和轻量级管线分别支持的技术:
自定义轻量级管线
可编程渲染管线架构不可思议的潜力在于,它要比Unity以往的渲染方式更加开放和可定制化。如果你想访问轻量级管线的源代码,可以查看可编程渲染管线的Github页面。你可以从那里获得LW RP的C#源代码,并根据项目的需求在它的基础上创建一个新的管线。
小结
关于轻量级渲染管线就为大家介绍在这里,如果你有任何问题,欢迎访问SRP在 Github上的频道或者在Unity Connect平台反馈给我们。

Unity China
376
Comments