Unity3D 深度图获取 与GrabPass 低开销方案 CommandBuffer

Unity3D 深度图获取 与GrabPass 低开销方案 CommandBuffer


范例工程: GITHUB

该文章有使用额外的屏幕特效控制脚本/基类 以及深度查看后处理Shader以及Opaque队列渲染图采样Shader

逛知乎的时候找到了大佬发的低成本深度图获取的贴子
鼓捣了几天做了些优化并且添加了对后处理的支持以及复制Opaque队列渲染图的功能

效果图

原图场景
原图场景
开启系统自带的深度图之后
在这里插入图片描述
开启低成本深度图贴图获取之后
在这里插入图片描述
对生成的低成本Opaque队列渲染图采样并进行uv采样干扰(GrabPass的低成本实现方式)
在这里插入图片描述

实现思路

1.使用Camera.SetTargetBuffer函数将摄像机的渲染目标贴图替换成颜色贴图(ColorBuffer)以及深度贴图(DepthBuffer).
2.使用CommandBuffer在ForwardOpaque队列复制两张替换的贴图并上传.
3.在OnRenderImage函数里将目标贴图传入以供后处理使用.

注意事项

1.由于替换了渲染目标贴图所以像是需要对当前渲染贴图(BuiltinRenderTextureType.CurrentActive)做处理的CommandBuffer的目标贴图就得是上文的(ColorBuffer)贴图.
2.后处理顺序需要正确处理.首先需为ColorBuffer的复制Blitz,然后才是其他的后处理效果.

   感谢阅读文章 如遇问题请联系博主
                                                                    --StriteR. 2020.5.31
©️2020 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值