欢迎光临散文网 会员登陆 & 注册

Unity学习笔记 Vol.61 使用URP的自定义渲染过程

2020-06-27 07:46 作者:NXL2  | 我要投稿

1.简介

通用渲染管道(URP)是Unity新的可脚本渲染管线的子集,该新脚本于Unity 2019.3。它取代了Unity 2018.3中的轻量级渲染管线(LWRP)。像LWRP一样,URP使开发人员可以使用自定义渲染过程通过自定义效果扩展Unity的图形管线。与普通的着色器和效果不同,这些通道独立于相机,并且可以在整个项目中持续存在,而无需为每个场景进行设置。

注意:与LWRP一样,URP与Unity的标准渲染器或HDRP不兼容。

通用渲染管线(URP)是Unity新的可脚本渲染管线的子集,该新脚本于Unity 2019.3。它取代了Unity 2018.3中的轻量级渲染管道(LWRP)。像LWRP一样,URP使开发人员可以使用自定义渲染过程通过自定义效果扩展Unity的图形管道。与普通的着色器和效果不同,这些通道独立于相机,并且可以在整个项目中持续存在,而无需为每个场景进行设置。

注意:与LWRP一样,URP与Unity的标准渲染器或HDRP不兼容。

Unity 2019.3中引入的Universal Render Pipeline取代了Lightweight Render Pipeline。上图使用了其他后期处理效果和更具前瞻性的卡通着色器。


2.管线设置

首先,我们必须首先设置我们的项目以使用URP。

通过导航到Window> Package Manager 并搜索Universal RP 来导入URP软件包(下图 )。

导入最新的Universal Render Pipeline包

安装我们的软件包后,让我们创建一个新的URP资产。

  • 右键单击Assets文件夹,然后导航到Create> Rendering> Universal Render Pipeline> Pipeline Asset 。将在URP旁边自动创建一个新的Forward Renderer。将其重命名为Outline Renderer 。它将负责实现卡通轮廓效果。

现在,我们必须告诉我们的项目使用我们创建的Asset和Renderer。

  • 导航到“ Edit(设置)”>“Project Settings(项目设置)”>“Graphics(图形)” 。在“ 可脚本编写的渲染管道设置(Scriptable Render Pipeline Settings)”下,选择“ URP资产(URP Asset)”(下图)。

配置我们的项目以使用URP资产和新的Forward Renderer。目前,我们的场景正在渲染,没有任何自定义效果。

您可能会注意到,此步骤不会影响您的项目。这是因为前向渲染器尚未对场景进行任何更改。我们将稍作更改。


3.介绍Toon轮廓着色器和材质

您一开始导入的Toon轮廓着色器由两部分组成:处理生成轮廓所需的渲染操作的实际着色器和将激活着色器的材质。可以在“ 资产”> “着色器”(Assets > Shaders)中找到“着色器”(“ ToonBasicOutline”),而在“ 资产”> “材质”(Assets > Material)中可以找到“ 材质” (下图 )。

着色器的工作方式是反转“网格”的法线(此操作随后使其不再受灯光影响),将其法线超出网格偏移一定的偏移量,然后使用用户定义的RGB颜色对其进行着色。

当将这些拉伸的法线应用于“图层蒙版(Layer Mask)”上的对象时,将在该蒙版内的GameObjects周围显示为轮廓。

“OutlineHull”材质,带有用于调整轮廓的颜色和宽度的选项


4.图层蒙版和带有渲染过程的后期处理

Unity通过多个过程或步骤渲染场景。每个步骤生成一个图像,例如:一个用于反照率(Albedo)(颜色信息),环境光遮挡(Ambient Occlusion)和法线(Normals)的图像。然后将这些图像合成以在屏幕上制作最终图像。将每个绘图调用分成多个遍,可以更好地控制图像的最终外观。卡通轮廓效果是一种后期处理效果,这意味着一旦绘制了场景,它将在整个屏幕顶部呈现。

我们可以将GameObjects分配给不同的层,以明确定义哪些对象将受到此后处理效果的影响(有效地创建蒙版)。

  • 选择要渲染的带有卡通轮廓“材质”的GameObject,单击“ 图层(Layer)” 旁边的下拉菜单,然后选择“ 添加图层(Add Layer)” 。

  • 在检查器中,创建一个名为Character 的新“ Layer Mask” (下图 )。

创建角色图层蒙版并将其分配给我们所需的GameObjects
  • 要使用新的渲染过程扩展自定义的Forward Renderer,请单击它并导航到Inspector。

  • 单击+ ,然后选择渲染对象(Render Objects)。这将创建一个新的渲染过程。让我们将其重命名为 Toon Outline (下图 )。

创建一个新的Render Objects渲染过程(或渲染器功能)
  • 因为我们希望此渲染过程仅影响角色图层中的对象,所以将“图层蒙版”设置为“ 角色(Character)”

接下来,我们将创建材质替代,以定义我们如何在角色层上渲染对象。

  • 单击“替代”旁边的下拉列表,并将我们导入的卡通轮廓“材质”导入到“ 材质(Material)” 插槽中(下图)。

设置“材质”替代以在角色图层中的对象上呈现卡通轮廓效果

设置此渲染通道后,场景中的GameObject(在此示例中为角色和背景道具)应使用卡通轮廓进行渲染(下图 )。

使用卡通轮廓渲染传递。有关更高级的卡通阴影,请查看Sobel边缘检测和后期过滤器。


5.结论

通过使用图层蒙版,我们可以定义如何使用URP中的自定义渲染过程来渲染一组特定的对象。我们还可以选择使用Shader Graph为每个渲染过程中使用的材质提供动力,而不是依赖ShaderLab中的传统HLSL脚本。

卡通轮廓的后期处理效果也可以通过称为Blit的新渲染器功能来实现,该功能是将多个渲染通道合成到单个图像中的方式。该工作流程简介中链接的软件包中提供了Blit Renderer。此方法依赖于Sobel边缘检测和色调分离着色器(与包装一起提供)来创建卡通轮廓材质。

Unity学习笔记 Vol.61 使用URP的自定义渲染过程的评论 (共 条)

分享到微博请遵守国家法律