Unity获取透明物体深度数据
前言
最近在做的项目有很多奇怪的需求,甚至之前在unity里用插件写了一个类似于蓝图的行为树插件,之后有时间给大家讲一讲相关的实现方法,今天刚解决了unity里透明物体无法获得深度数据的问题。所以分享给大家。
透明&景深
景深效果作为一种屏幕后处理技术想必大家都是很了解了,在这里就不做展开了,通过访问相机自带的深度数据就可以很方便的和高斯模糊做插值,模拟大光圈下景深效果。但是因为unity的先天因素,自带的透明shader都不会进行深度检测,而先深度检测后透明处理的两个pass的shader只能渲染出模型内部具有正确深度的图形,而不能让摄像机正确获取到深度信息。本文章旨在解决这种问题。
需求
根据透明的需求一般分为两种,一种是模型的半透明效果,另一种是带透明通道图片/视频中alpha切除效果,我的主要关注的是后者,但是顺便研究了一下前者,我们分别来讨论。
先给大家看一下效果吧:
模型透明度部分
正常不透明物体的深度图
使用unity透明shader渲染的物体为半透明,但没有深度图
使用我的方法,存在深度图的透明物体