目录
一、Custom Pass Volume组件介绍
1.Mode(模式)
2.Injection Point(注入点)
3.Priority
4.Fade Radius
5.custom passes
二、查看Custom Pass的渲染阶段
Custom Pass允许你执行以下操作(官方文档):
- 更改场景中材质的外观。
- 更改 Unity 渲染游戏对象的顺序。
- 允许 Unity 将摄像机缓冲区读取到着色器。
在 HDRP 渲染循环期间,Unity 使用注入点在某个特定点执行自定义通道。可通过更改注入点来控制自定义通道如何影响场景的外观。
Custom Pass也是用Volume框架对各项设置进行管理的。但Custom Pass的Volume框架和之前详细描述过的Volume框架有以下区别:
- 无法对Custom Pass像对普通Volume一样进行混合。如果有多个重叠的Custom Pass,拥有最小Bounding Volume的Custom Pass Volume会被执行,其他Custom Pass则会被忽略。
- Custom Pass的数据不像普通Volume那样被保存在HDRP配置文件中,而是被保存在当前Custom Pass Volume的GameObject中。
一、Custom Pass Volume组件介绍
1.Mode(模式)
可以在Custom Pass Volume中选择两种模式:Global或者Local。这两种模式与普通Volume中两种模式的使用方法基本相同。在Global(全局)模式下Custom Pass影响整个场景。在Local(本地)模式下我们需要额外添加一个碰撞体用于碰撞测试,只有当场景中的相机与带碰撞体的Custom Pass Volume物体发生碰撞时,Custom Pass才会影响整个场景。
2.Injection Point(注入点)
可以选择一个注入点以执行Custom Pass上的逻辑。选项中的6个注入点按照从上到下的顺序执行。在每一个点我们可以读写某些缓冲(buffer)数据,我们也知道每一个注入点开始执行Custom Pass逻辑之前已经渲染好了什么物体。
3.Priority
如果为同一注入点分配了多个 Custom Pass Volume,可使用此属性来控制 Unity 执行它们的顺序。Unity 按优先级顺序(从 0 开始)执行这些Volume。
4.Fade Radius
Local模式下多了一个Fade Radius选项,默认数值为0,单位为m。
- 如果设置为0,就意味着只要相机一离开Custom Pass Volume关联的Box Collider,Custom Pass就会失效。
- 如果设置为大于0,比如3m,那么相机离开Box Collider大于3m时,Custom Pass才会失效。
5.custom passes
- FullScreen Custom Pass:用于执行由 Unity 应用于摄像机视图或存储在自定义通道缓冲区中的效果。
- DrawRenderers Custom Pass:用于将自定义通道应用于摄像机视图中的游戏对象。
- Filters(过滤器):在此处设置条件,选择需要替换材质的物体。
- Layer Mask:用于选择场景中物体所在的Layer。
- Queue:通过这里的标签选择我们需要影响的材质。如:不透明材质选择All Opaque。
- Overrides:在此选择用于重写的材质信息。
- Material:关联一个材质用于替换通过Filters条件找到的材质。
- Pass Name:因为所有的不透明(Opaque)物体都是在Forward pass中被渲染,所以我们在此选择Forward(注:如果在HDRP配置文件中设置了Deferred模式,则要选择Both以支持Forward模式)。
- Override Depth(重写深度):如果要渲染只通过Custom Pass渲染的物体,那么要打开这个选项并选择Less Equal,这样不透明物体的信息才能被写入深度缓冲中,然后被正确渲染。
- Filters(过滤器):在此处设置条件,选择需要替换材质的物体。
- ObjectID Custom Pass:将由ObjectID控制的唯一颜色应用于场景中的GameObjects。
二、查看Custom Pass的渲染阶段
通过菜单Window→Analysis→Frame Debugger打开Frame Debugger窗口,我们可以在Frame Debugger窗口查看渲染每一帧画面的整个过程。打开Frame Debugger窗口以后,可以通过左上角的Enable按钮启用它。