0
点赞
收藏
分享

微信扫一扫

UE4从零开始的卡通渲染——阴影篇(三)

捡历史的小木板 2022-03-22 阅读 186

UE4从零开始的卡通渲染

前言

       我们在阴影篇一中提到过用SmoothStep函数的形式来进行色阶分离,并且还支持自定义阴影颜色。如下图所示

 

但是考虑到实际开发项目中,有可能对阴影的过度颜色有更高的要求,例如下面这种样子,这样的画阴影颜色和平滑区域的颜色有很明显的区分,这样的话我们之前的材质球就不支持了。

 

所以我们接下来要做的就是实现可以自由替换阴影颜色以及过度去区域的表现。

原理

       首先就是我们必须要支持可以通过替换纹理来进行上方的效果表现。先去PS里大概做这样一张Ramp图,这是作者自己P的,效果上来说肯定没法比,但是主要是介绍大体思路,所以也差不多了。

 

       有了这张图以后,我们要做到就是确定采样的TextureCoordinate,通过观察Ramp图我们发现,在阴影区域我们希望采样的左侧,然后过渡区域采样中部,最后就是不存在阴影的区域采样右侧。也就是我们将与灯光的点乘的[-1,1]范围转换到[0,1]范围就可以达到我们想要的效果

       half lambert着色模型和我们想要的效果类似。

UE中实践

  1. 新建一个母材质,并用我们之前创建的shading model。

 

  1. 求光照与法线的点乘,并转换到[0,1]区间来对Ramp图进行采样

 

  1. 增加一个纹理参数来获取BaseColor

 

  1. 最后由于我们CustomData1之前存的是二值化后的NoL值,所以这里直接传0,

 

 最终效果

 

       可以看到这也有很明显的色阶分离的效果,而且在具体的效果上可能会更加自由一点,颜色的改变只需要替换对应Ramp图即可。

举报

相关推荐

UE4阴影【类说明】

UE4 动画

UE4问题

UE4 打LOG

UE4 PixelStreamingDemo 验证

ue4无法编译

0 条评论