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

MMD联动Unity学习笔记 Vol.41 在UTS2中使用不同的着色器

2019-08-08 19:35 作者:NXL2  | 我要投稿

前言

    这一期我们还是继续学习UTS2的内容,我们来深入研究一下UTS2中各种不同类型着色器的功能及差异。

在UTS2中使用不同的着色器

    打开由Unity-Chan Toon Shader 2.0(UTS2)安装的着色器类(UnityChanToonShader),它显示它包含各种着色器文件。在这一点上,大多数用户只会关闭它;而仔细查看菜单中的各种名称块。这些名称块(ToonDoubleShadeWithFeatherClippingStencilMask,等)实际上的UTS2最基本的功能之一。这种结构可确保与菜单中显示的名称相同的着色器具有相同的功能。
现在,我们来看看每个名称块及其功能。

●UnityChanToonShader根文件夹中的着色器

UTS2着色器分为两大类

UTS2着色器分为两大类。

  • DoubleShadeWithFeather:UTS2的标准着色器。允许2种阴影颜色(双阴影颜色)和颜色之间的渐变(羽化)。

  • ShadingGradeMap:更高级的UTS2着色器。除了DoubleShadeWithFeather功能外,此着色器还可以包含一个名为ShadingGradeMap的特殊贴图。

两种类型都具有相同的基本特征,因此通过匹配color(_Step)和gradation(_Feather)值可以使用任一类型实现相同的外观。
选择使用哪种着色器是个人品味的问题,但通常DoubleShadeWithFeather更适合需要清晰,明确定义的颜色的cel样式,而ShadingGradeMap对于颜色更模糊的图示样式可能更好。

此外,Toon在着色器名称的开头意味着着色器可以使用对象反转的方法创建轮廓

UTS2中的轮廓有很多自定义选项:使用专用纹理绘制轮廓的强度,与基色混合的级别,相机底部偏移等等。

着色器名称也有名称块,例如Clipping最后。这些表明以下类型的功能。

  • Clipping:Shader包含一个剪贴蒙版,一种“纹理省略”,可以剪切,溶解等。

  • TransClipping:还表示剪切蒙版,但在省略纹理时会考虑蒙版的αTransparency。这样可以更好地省略,但会产生更大的负担Clipping

  • StencilMask:使用模板缓冲区指定某些部件通过其他部件的可见程度。例如,对于动漫风格角色,可能希望始终使眉毛可见而不是被角色的刘海覆盖。此着色器必须始终与StencilOut类型着色器一起使用。

  • StencilOut:与StencilMask类型着色器一起使用。在上面的例子中,这个着色器将设置在“刘海”部分上,使它们透明,以便“眉毛”部分可见。

  ●UnityChanToonShader / NoOutline文件夹中的着色器

    NoOutline文件夹中的着色器位于ToonColor其名称的前面,但这里表示着色器没有轮廓功能

    没有轮廓功能的零件将减少一个绘图pass(通道),因此这些着色器非常适用于不需要轮廓的设计或使用高精度的在线着色器(如PSOFT Pencil + 4 Line for Unity)。

·透明材质专用的透明着色器

    某些NoOutline着色器的名称末尾有Transparent名称块。

    这些是特殊的透明着色器。它们适用于具有“腮红”外观的部位,或用于玻璃和玻璃状物体。

↑腮红材质的样本设置。

如何将自定义渲染队列设置为UTS2材质

    对半透明材质设置自定义渲染队列,不做任何调整的话,内侧的半透明物件在某些相机的角度就会消失。

    这个是内侧的半透明物件的自定义渲染队列调整的结果。如你所见,不管从哪个角度见内侧的半透明物件都可以显示出来。这样自定义渲染队列调整后,半透明物件可以稳定的显示出来。

    对着色器球全体分配的材质进行复制,创建为内侧的物件专用的材质。

    复制后材质命名为Emerald_Inside。设置与原来的材质相同的Transparent系材质。将Emerald_Inside拖拽给着色器球内部部件的MaterialBaseInside,将Emerald_Inside材质的检查器打开,确认当前的渲染队列 ,确认各个材质的现在的渲染队列,点击检查器右上角的按钮,可以看到Debug选项,我们切换至Debug。

    使用Debug显示后, Custom Render Queue的值表示为-1。

    -1到底是什么意思,再次从右上的汉堡菜单里面将检查器的设置回Normal(通常)。

    从UTS的自定义检查器,为了看到现在渲染队列,我们切换为用Show All Properties来显示。

    渲染队列的插槽,最下方可以看到自定义渲染队列的选项。现在这个值在From Shader里面显示为3000。

    再次将检查器菜单切换为Debug,Debug下,Custom Render Queue显示为-1、实际上,这意味着可以使用(From Shader)用着色器侧定义的Render Queue的值。再次将检查器切换回通常模式。保持Show All Properties不变,将Render Queue插槽的数字进行变更。

    输入2999。然后左侧的选项卡切换为Transparent-1。这样意味着,比起普通的半透明(Transparent = 3000),渲染列队要先进行描画的处理。

    这时,确认材质的Debug显示。计划通,Custom Render Queue里被指定了2999这个值。再次将检查器切换回普通模式,将UTS2也切换回自定义检查器的显示。确认游戏物件后,着色器球的内侧的半透明部件,不论哪个角度都会正确。

    刚刚向小伙伴们展示如何使用UTS2 v.2.0.7为每种材料设置自定义渲染提示。

    自定义渲染提示调整至关重要,特别是如果您想要准确显示透明材质。上面使用的示例场景包含在UTS2示例项目中,因此您可以移动并手动检查它。

●UnityChanToonShader / AngelRing文件夹中的着色器

    该AngelRing文件夹包含具有“天使环”功能的着色器。
    “天使环”是一种突出效果,如下图所示。从相机的角度来看,它们具有固定的位置。

所谓“天使环”即漫画中常见高反光物件的高光效果,比如头发

    只有UTS2的高规格ShadingGradeMap着色器和它们的变体ShadingGradeMap_TransClipping着色器具有这种“天使环”功能。
    这些着色器主要用于“头发”部件,这使它们与StencilOut着色器类似,而stencils则省略这些着色器。

●UnityChanToonShader / Mobile文件夹中的着色器

用于移动和VR内容的着色器的轻量级版本,通常不会更改对象的外观,可以在Mobile文件夹中找到 。
以下功能受到限制,以使这些着色器对于移动平台更轻。

  • 只能使用一个实时定向灯不支持多个灯和实时点光源)。

  • 使用烘焙点光源和光照探针支持点光源。这可能需要进行一些调整GI_Intensity(全局光照强度)

    移动着色器属性与普通Toon_DoubleShadeWithFeather着色器和 Toon_ShadingGradeMap着色器兼容,因此如果上述功能可以接受,则可以使用移动着色器替换其标准版本,以提高渲染性能。

    该Mobile/AngelRing文件夹包含支持“天使环”功能的移动着色器。
    每个着色器的基本功能与其标准版本相同。

●UnityChanToonShader / Tessellation文件夹中的着色器

    可以在文件夹中找到支持DirectX 11 Phong Tessellation(镶嵌)的 UTS2着色器Tessellation
    Phong Tessellation校正细分曲面的位置,使它们与网格的法向量更紧密地对齐。这是平滑低多边形网格的有效方法。
    UTS2只能在Windows环境中使用Phong Tessellation和DirectX 11。

Tessellation/Light文件夹包含Tessellation着色器的轻量级版本,具有与着色器相同的限制Mobile
其余文件夹还包含先前描述的着色器的版本,并添加了对Phong Tessellation的支持。

    添加Phong Tessellation显着提高了轮廓和其他细节(如嘴唇)的质量。
    这些着色器主要用于预渲染内容,但是它们也具有高端VR角色内容的应用程序,其要求诸如使角色与用户非常接近。

●UnityChanToonShader / Helper文件夹中的着色器

    该Helper文件夹包含仅用于显示轮廓对象的着色器。
    轮廓对象可以作为多材质应用于角色。

    通过转到网格Skinned Mesh RendererMaterials并增加Size1 来添加轮廓,然后注册所需的轮廓材质。

警告:轮廓将添加到其他材料之上,这将增加PC负担。使用这些着色器时请记住这一点。



MMD联动Unity学习笔记 Vol.41 在UTS2中使用不同的着色器的评论 (共 条)

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