Unity中的CommandBuffer

上一篇讲了Unity中的RenderTexture,提到了FrameBuffer,unity中可以通过FrameDebugger来查看FrameBuffer的内容,CommandBuffer通过字面意思 就是一条命令 ,unity提供给开发者的一个自定义的渲染命令,依赖相机,用来拓展渲染管线的渲染效果,我们可以根据参数指定CommandBuffer在绿色的点上添加执行命令:

unity中调用的枚举是:

CommandBuffer的使用:

新建一个cube,使用不透明的红色的材质球,命名为RedCube,添加TestCommand.cs,拖进去绿色的材质球GreenMat,和RedCube:

Camera调用AddCommandBuffer来把指定的指令塞到自己的渲染步骤中,需要注意多Camera下CommandBuffer的绑定.

未运行状态:

运行游戏,可以看到RedCube是红色的,背景是黑色的

 

打开FrameDebuger可以看到,根据CameraEvent的设置,插入的commandBuffer设置在BeforeForwardOpaque,所以绿色渲染完被clear成黑色,然后红色cube最后渲染,

如果CameraEvent设置为AfterForwardOpaque,Clear操作放在渲染green之前

画面为,先渲染了红色cube,然后调用了Clear变成了黑色,最后渲染了green.

FrameDebugger画面

可以看出来Clear操作被提前了,CommandBuffer的指令也被延后了. 

CommandBuffer默认修改了默认的RenderTexture(也就是game窗口),如果调用CommandBuffer.SetRenderTarget().它就会把渲染内容附在那个RT上,而不会对Game窗口的渲染内容有任何影响.可以通过以下方式修改到game窗口:

 

可以看出来CommandBuffer这个东西自由度很高,根据CameraEvent ,它可以穿插在任意步骤之中,如果插在everything之后,它还能用作屏幕后处理.看到这大概可以猜到 CommandBuffer其实对应的是OpenGL中的Push Buffer,可以理解成Unity使用PushBuffer构成了固定渲染管线,同时封装了CommandBuffer供开发者自定义一些渲染指令. 另外,Unity2019.3中,自定义渲染管线SRP已经脱离预览版,其实就是允许开发者使用CommandBuffer自己构建一套渲染管线.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值