Unity Graphics Command Buffers 图形指令缓存

目录:Unity Graphics - 知识点目录(先占位,后续持续更新)
原文:Graphics Command Buffers
版本:2019.1

Graphics Command Buffers

图形指令缓存

Command Buffers 允许你扩展 Unity 内置的渲染管线(Render pipeline)。Command Buffer 可持有一些渲染指令,这些指令可以在相机的渲染(Camera Rendering)的某个点,可以执行。要将这些Command Buffer指定在Unity的内置管线中的某个点至此那个,可以使用:CameraEvent.enum

例如,你可以使用 Command Buffer带上 AfterGBuffer 的 CameraEvent(相机事件)设置,让额外的GameObject 渲染到 Deffered pipeline(延迟渲染管线),在管线的所有不透明的GameObjects都执行完后。

下图,是从一个高层面去看Unity的Camera如果渲染一个场景,使用Forward(正向渲染)或是Deferred(延迟渲染)管线。

  • 黑色框表示Unity内置处理。
  • 蓝色框表示可以使用CameraEvent来添加Command Buffers的地方。
    在这里插入图片描述

查看 CommandBuffer 类和CameraEvent 枚举来了解更多信息。你也可以使用Command Buffers来替代一些图像效果(image effects,这里一般指的是后效)的处理。

Example code

代码示例

这里有个使用Command Buffers来演示一些效果的Unity项目:RenderingCommandBuffers.zip

Blurry refractions

毛玻璃折射

这个场景演示的是可以用于实现毛玻璃。
在这里插入图片描述

在Unity渲染了不透明对象与skybox天空和后,将当前的图像内容复制到一个临时的RT,并模糊处理它。然后再通过玻璃的shader来采样这个模糊的图像,并使用Normal Map(法线贴图)来偏移UV从而到达折射效果。获取当前图像内容的方式类似:Shader GrabPass

(关于GrabPass内容,也可以参考我之前写的一篇:Unity Shader GrabPass 使用注意的问题

Custom area lights in the deferred pipeline

在延迟渲染管线中自定义区域光

这场景展示的是,你可以给延迟渲染中添加圆形和管状形的区域光。
在这里插入图片描述

Unity使用处理一般的延迟光照渲染的pass时,为每一个自定义的光照绘制一个球体。每个一个球体使用Shader来计算光照并添加到光照缓存中(light buffer)。

Decals in the deferred pipeline

在延迟管线中实现贴花(Decals)

这个场景展示处理延迟渲染的贴花(Decals)。
在这里插入图片描述
Unity处理G-buffer时,将绘制每一个贴花(Decals)到G-buffer内容中。类似Unity处理延迟管线的光照处理,但他修改的是G-buffer纹理,而不是累计光照缓存。
在这里插入图片描述
这种贴花方式只处理几何体与立方体有交集的。


关于CommandBuffer也可以立刻执行:Graphics.ExecuteCommandBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值