Shader入门—EX UE4中的Toon-shading

UE4中实现卡通材质着色有点麻烦,毕竟他不能像U3D那样直接写shader。所以我们先实现屏幕后渲染的调节,这部分实力有点多,主要进行的是场景的描边操作。思路是在屏幕上进行扫描再进行深度检测,不同深度的会进行描边处理。这部分有点麻烦,我想要同一深度也有描边效果。关于这点,我还在学习UE4的shader,希望能达成像U3D中那样的描边材质,对场景中单个物体的轮廓线进行编辑。不然自由度太低了。不过一般场景用用应该是够了。不过本文使用了一个小trick让其可行了。

具体制作过程参照的是UE4直播中所展现出的制作思路。

PostProcessingOutline
深度检测
法线检测
阴影强度
最后输出
根据教程所制作的材质的效果

上面是根据教程所做的效果,可以看出我们不需要在他的skybox中进行检测,所以,我们需要进行一个mask,将skybox剔除。

描边剔除skybox

设置好这部分的nodes后,我们可以在材质预览器中预览该效果

剔除之后的材质球

编辑完之后,我们创建一个材质实例,然后赋予PostProcessVolumes中的渲染功能下的后期处理材质。

PostProcessVolumes下的后期处理材质标签

接着我们选择需要处理描边的物体然后打开自定义深度检测。直接在命令面板搜索custom便可找到,也可以在渲染-渲染自定义深度通道,将其开启,便能使用我们的轮廓线材质。

自定义深度通道

以上是描边shader的基本处理,然后配合我们在unity3d中实现的Toon-Shading中的第二个Pass思路来完成我们的UE4diffuse材质编辑。直接将卡通材质球赋予物体,便可达成我们需要的Toon-Shading的需求

这种纯用材质编辑器进行深度检测生产外轮廓的做法实在是繁琐,而且无法进行单个物体的轮廓修改,最好还是在UE4的HLSL中进行编写比较好,但一般小的项目用这种方法可以节省不少开发陈本,就是连线太烦了。没有coding那样有自由性。

发表评论

邮箱地址不会被公开。 必填项已用*标注