【笔记】【百人计划】图形3.7.2 command buffer及urp概述

一、Command Buffer

Command Buffer:用来存储渲染命令的缓冲区

  • 保存渲染命令列表
    • 如set render target, draw mesh等等,可以设置在摄像机渲染期间的不同时间点执行

用途

image-20221004212010010

  • 如图使用Command Buffer获取渲染这三个物体之前的背景,输出到RT,渲染物体时采样RT进行处理,获得各种效果
  • 也可以在选择物体时使用多pass进行外扩描边(ExcuteInEditorMode的HeaderAttribute)

从Opengl指令分析Command Buffer原理

image-20221004212333393

image-20221004212443470

Unity里FrameDebugger打开的一大堆指令,也是Command Buffer

image-20221004212836046

image-20221004212938333

从自定义RenderPipeline分析(ScriptableRenderContext与Command Buffer)

这一段也许可以自己去看看catlike coding的SRP部分

image-20221004215426213

image-20221004215744770

二、Command Buffer常用函数

image-20221004215945624

  • RenderTarget

image-20221004220319374

image-20221004220610753

  • RenderTexture
    • 申请临时的RT必须手动Release
    • Release与Destroy的区别
      • https://zhuanlan.zhihu.com/p/41251356
      • Release释放显存不释放内存
      • Destroy会把Object销毁的同时连带显存释放掉,因此频繁使用Destroy会加重申请内存的负担

image-20221004220340735

image-20221004220434194

image-20221004220529916

  • DrawMesh

image-20221004223532948

三、使用方法

  • URP
  • RenderFeature与Command Buffer原理分析
  • Volume组件

四、注意事项

  • Scene窗口CameraColorTexture丢失[MSAA导致的bug ResolveAA]
  • 深度缓冲和模板缓冲[16bit和24/32bit]
  • RT精度格式问题
  • 加速优化

image-20221004225932580

作业

完成洛基中的传送门效果

参考资料

[1] https://www.bilibili.com/video/BV13F411e7Ai

【技术美术百人计划】图形 3.72 command buffer及urp概述