Volumes概述
URP使用了一个Volume框架。每个Volume可以是全局的,也可以有局部边界。它们各自包含场景设置属性值,URP会根据相机的位置在这些值之间进行插值,以计算最终值。
局部Volumes的应用
例如,您可以使用局部Volumes来改变环境设置,如雾的颜色和密度,从而改变场景中不同区域的气氛。
Volume组件的添加
您可以将Volume组件添加到任何GameObject上,包括相机,但为每个Volume创建一个专用的GameObject是一个好习惯。Volume组件本身不包含实际数据,而是引用了一个包含要插值的值的Volume Profile。
Volume Profile和默认值
Volume Profile包含每个属性的默认值,并默认隐藏它们。要查看或修改这些属性,您必须在Volume Profile中添加Volume覆盖,这些覆盖是包含默认值覆盖的结构。
Volumes的交互方式
Volumes还包含控制它们如何与其他Volumes交互的属性。一个场景可以包含许多Volumes。全局Volumes无论相机在场景中的位置如何都会影响相机,而局部Volumes如果它们的Collider边界内包含了相机,则会影响相机。
URP的运行时处理
在运行时,URP会查看场景中所有附加到活动GameObject的已启用Volumes,并确定每个Volume对最终场景设置的贡献。URP使用相机的位置和上面描述的Volume属性来计算这种贡献。然后,它使用所有具有非零贡献的Volumes来计算所有Volume组件中每个属性的插值最终值。
Volume组件的组合
Volumes可以包含不同的Volume组件组合。例如,一个Volume可能包含一个Procedural Sky Volume组件,而其他Volumes包含Exponential Fog Volume组件。
这些属性是关于Unity的渲染管线(URP,Universal Render Pipeline)中的“Volume”系统的设置。Volume系统允许开发者为场景中的特定区域定义渲染设置,例如后处理效果、光照设置、雾效等。下面是对每个属性的解释:
Mode:
- Global:选择此模式时,Volume没有边界,可以影响场景中的所有相机。
- Local:选择此模式时,可以为Volume指定边界,这样Volume只影响边界内的相机。要设置这些边界,需要给Volume的GameObject添加一个碰撞器(Collider)。
Blend Distance:
- 这是一个从Volume的碰撞器开始的最远距离,URP从这个距离开始混合渲染效果。值为0意味着一旦相机进入Volume,URP会立即应用此Volume的覆盖设置。
- 这个属性只在选择“Local”模式时可见。
Weight:
- 表示Volume对场景的影响程度。URP使用这个乘数来计算Camera位置和Blend Distance的值。
- 权重值越高,Volume的效果就越强。
Priority:
- 当有多个Volume对场景有相同的影响程度时,URP使用这个值来决定使用哪个Volume。
- 优先级更高的Volume会首先被使用。
Profile:
- 这是一个Volume Profile资源,其中包含了Volume组件,这些组件存储了URP用来处理此Volume的属性。
- 通过在Profile中定义和配置不同的Volume组件,你可以为Volume添加各种渲染效果。
Volume Profiles 解释
Volume Profile 字段:这个字段存储了一个体积配置文件,它是一个资产(Asset),包含了URP用来渲染场景的各种属性。
编辑与分配:您可以编辑这个体积配置文件,或者给 Profile 字段分配一个不同的体积配置文件。
创建与克隆:通过点击“New”(新建)和“Clone”(克隆)按钮,您可以创建一个新的体积配置文件,或者克隆当前的体积配置文件。
配置本地体积(Local Volume)
选择本地模式:如果您在体积的“Mode”下拉菜单中选择了“Local”,那么您必须给 GameObject 添加一个触发器碰撞体(Trigger Collider)来定义它的边界。
打开体积进行编辑:点击体积以在 Inspector 中打开它,然后选择“Add Component”(添加组件)> “Physics”(物理)> “Box Collider”(盒子碰撞体)。
定义体积边界:通过调整盒子碰撞体的“Size”字段和 Transform 组件的“Scale”字段,您可以定义体积的边界。
选择碰撞体类型:您可以使用任何类型的3D碰撞体,从简单的“Box Colliders”到更复杂的凸面“Mesh Colliders”。但是,出于性能考虑,建议使用简单的碰撞体,因为遍历具有许多顶点的“Mesh Colliders”会消耗大量资源。
混合距离:本地体积还有一个“Blend Distance”,它表示从碰撞体表面开始向外延伸的距离,在这个距离内,URP 开始将该体积的设置与其他影响相机的体积设置进行混合。