MMD 联动 Unity 学习笔记 Vol.44 LWRP 中实现卡通轮廓效果

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:xL2P

前言 前面几期我们共同研究使用 UTS2 在 Unity 中实现卡通风格渲染,但是目前 UTS 只能使用在 Unity 的传统渲染管线中。

前言

前面几期我们共同研究使用 UTS2 在 Unity 中实现卡通风格渲染,但是目前 UTS 只能使用在 Unity 的传统渲染管线中。这次我们研究一下,如何在 Unity 2019 LWRP 轻量级渲染管线中使用 Scriptable Render Passes 来实现卡通风格的后期特效。这期内容来自官方视频,下载示例工程:https://ole.unity.com/toonoutline

操作步骤

我们这次准备制作 ToonShader,使用的功能是 Unity 的新可编程渲染管线,简称 SRP。

这里用到的演示场景,是使用 Unity 的轻量级渲染管线(LWRP)的自定义版本渲染的。

如果点击播放按钮播放场景,我们会看到角色配有动画,几个卡通渲染风格的场景视图,该工程包含自定义渲染管线资源,两个不同的轮廓效果着色器,预配置的前向渲染数据资源,以及一个可供上手使用的示例场景。

这个卡通渲染风格的场景,是通过自定义可编程渲染管线(SRP)创建的,基于预先构建的轻量级渲染管线(LWRP),Unity 的可编程渲染管线(SRP),可让你根据目标平台定制渲染过程,以便针对特定硬件进行性能优化,同时实现所需的渲染风格。这样你就可以使用 C# 脚本在 Unity 中进行渲染配置,你可以自定义渲染流程,以匹配自己的艺术风格和游戏并控制可用性能资源的使用方式。

让我们使用自定义的卡通后期特效着色器扩展默认的轻量级管线来创建这个 Toon Shader。首先,创建一个新的 Pipeline,选择 Assets > Create > Rendering > Lightweight Render Pipeline > Pipeline Asset(命名为 ToonLWRP),这将基于轻量级渲染管线,创建一个新的渲染管线资源。

接下来,我们将创建一个新的自定义前向渲染器资源,Asset > Create > Rendering > Lightweight Render Pipeline > Forward Renderer(命名为 ToonForwardRenderer)。

轮廓线的粗细

这个卡通着色效果由两个主要元素构成,轮廓效果,它会在渲染网格的边缘添加轮廓线,色调分离(Posterize)效果,它会减少图像中的颜色,我们会将这两个效果作为 Renderer Features(渲染器功能),通过使用包含在项目中的 “Blit 自定义渲染器功能”,添加到我们的新管线中,Blit 自定义功能提供了一种简单方法,将基本 Blit 操作和 Material(材质)一起添加到自定义渲染管线中。我们将使用这个 Blit 和卡通效果着色器来表现后期特效。

在提供的项目中,有两个不同的卡通效果着色器,“Toon Basic Outline”和 “Sobel Filter”,在本教程中,我们将使用“Sobel Filter”,“Sobel Filter” 是一种后处理效果,它使用索伯算子(Sobel operator)来检测图像中的边缘,这同时还具有一个 Posterize(色调分离)的可选功能,勾选它可减少颜色数量,从而打造更具风格的外观。

将 “SobelFilter” 着色器指定给新材质,命名此新材质为“OutlineToon_SobelBlit”。

要将 Sobel 效果连接到我们的自定义渲染管线,选中 “ToonForwardRenderer” 资源,在 Renderer Features 的空列表中,单击加号(+)按钮,以添加新的渲染器功能,然后选择 “Blit” 菜单选项,将此新功能命名为“Sobel Outlines”。

将 Event 设置为 “After Rendering Transparents”,这表示我们的效果将在绘制所有不透明和透明网格后运行,将 Blit Material 设置为“OutlineToon_SobelBlit” 材质,将 Blit Material Pass Index 设置为“0”,接下来,确保将 Destination 设置为“Color”,Texture Id 处须填写“_BlitPassTexture”。

我们的自定义前身渲染器已准备就绪,在我们的自定义轻量级渲染管线资源中,将 Renderer Type 设置为 “Custom”,然后将带有“Sobel Filter” 的自定义 “Forward Renderer Data” 指定给 Data 栏。

要使用新管线对场景进行渲染,打开 Edit > Project Settings > Graphics。

然后将新管线资源指定给 “Scriptable Render Pipeline Settings” 栏,我们的自定义管线,现在有了 Sobel Outline 效果。

修改 Count 参数查看效果变化

请注意,我们可以调整指定的材质,并实时查看结果,也可以为 “ToonBasicOutline” 着色器或任何其他兼容的后期处理着色器重复这些步骤,以将其添加到我们的自定义渲染管线中。

评论