一、效果如下图:
二、分析:
回顾复习:在后期处理材质三中,我们通过计算开启自定义深度通道物体的像素点上下左右4个像素SceneTextureCustomDepth深度之和来判断物体的外部(包含物体的边)和内部,只有内部像素他的上下左右4个像素自定义深度之和才为有限值,边和外部都为无限大(这与没有自定义深度物体用无穷大填充有关),这样我们使用if语句就能判定它与无穷大的关系,从而让边和外部为描边颜色,内部为场景颜色。我们通过自定义模具得到物体外部为0内部为模具值的蒙版,这样我们可以用lerp节点,当为0时为场景色,而边和内部为上一步if语句的结果就可以了。
那么场景物体描边怎么来确定这个边呢?
边有什么特点呢?相信理解了场景深度、自定义深度和自定义模具知识的朋友们,会发现边的场景深度是不是悬殊很大?因为2个物体有间隔,所以两个物体的场景深度悬殊大,差值是不是很大?那么我们怎么得到这个差值呢?是不是边的上边像素减去边的下边像素是有很大的值?这能不能作为边的判定条件呢?
三、所涉知识点:
SceneTextureSceneDepth(场景深度)
场景深度图代表的意思是物体离摄像机越远数值就越大,离摄像机越近数字就越小越接近黑色 。测试如下图:
四、制作步骤:
1、当前像素的场景深度减去右下方像素的场景深度
根据我们的分析,如果我们把一张场景深度图减去偏移一个像素的深度图,那么在场景深度有断层的附近将会有数值相对较大的差值出现,我们就可以用这种方法得到场景的描边勾线 。
效果制作如下:
得到效果图如下:
画面有抖动,材质的可混合位置为色调映射前就解决这个问题了。
2、分析结果出现原因
上一步,我们运用之前偏移像素点的方法,以SceneTexelSize作为偏移单位,接着与保存UV各