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

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

2019-08-22 18:41 作者:NXL2  | 我要投稿

前言

    前面几期我们共同研究使用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”着色器或任何其他兼容的后期处理着色器重复这些步骤,以将其添加到我们的自定义渲染管线中。

MMD联动Unity学习笔记 Vol.44 LWRP中实现卡通轮廓效果的评论 (共 条)

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