很多游戏都有鹰眼锁定,这个时候就需要对敌人进行描边操作。描边的话其实有很多种方式,我喜欢在后期处理中做这一步工作。
描边的话就是对图像进行一个屏幕卷积运算,在虚幻4里做卷积的话材质节点就能完全完成。
最后出来的效果是这样的
但是简单的卷积操作并不理想,因为这是直接在rendertarget上进行绘制,这时候已经没有深度比对或者什么其他东西了,所以这个额时候就会出现穿透,没有遮挡效果。我尝试过用rendertarget保存这个模型的depth然后再和场景的depth比对,但是这种方法并不理想。首先绘制一张rendertarget来专门做这么小的一件事情感觉不是特别划算,第二就是rendercapture绘制的depth值和场景的depth值是不等的。customdepth和scenedepth并不相等。
我发现stencil值可以进行区分,因为stencil值可以从0到255进行取值。于是我把需要勾边和不需要勾边的物体的stencil值进行区分,从而得到了下面的效果,完美解决了勾边重叠的问题。