一、Command Buffer
Command Buffer:用来存储渲染命令的缓冲区
- 保存渲染命令列表
- 如set render target, draw mesh等等,可以设置在摄像机渲染期间的不同时间点执行
用途
- 如图使用Command Buffer获取渲染这三个物体之前的背景,输出到RT,渲染物体时采样RT进行处理,获得各种效果
- 也可以在选择物体时使用多pass进行外扩描边(ExcuteInEditorMode的HeaderAttribute)
从Opengl指令分析Command Buffer原理
Unity里FrameDebugger打开的一大堆指令,也是Command Buffer
从自定义RenderPipeline分析(ScriptableRenderContext与Command Buffer)
这一段也许可以自己去看看catlike coding的SRP部分
二、Command Buffer常用函数
- RenderTarget
- RenderTexture
- 申请临时的RT必须手动Release
- Release与Destroy的区别
- https://zhuanlan.zhihu.com/p/41251356
- Release释放显存不释放内存
- Destroy会把Object销毁的同时连带显存释放掉,因此频繁使用Destroy会加重申请内存的负担
- DrawMesh
三、使用方法
- URP
- RenderFeature与Command Buffer原理分析
- Volume组件
四、注意事项
- Scene窗口CameraColorTexture丢失[MSAA导致的bug ResolveAA]
- 深度缓冲和模板缓冲[16bit和24/32bit]
- RT精度格式问题
- 加速优化
作业
完成洛基中的传送门效果
参考资料
[1] https://www.bilibili.com/video/BV13F411e7Ai
【技术美术百人计划】图形 3.72 command buffer及urp概述