在 HDRP 中,视觉效果是基于 Volume 制作的。 简单来说,volume 划分了游戏世界中的“区域”。 它们可以在默认的视觉上叠加额外的效果,以此来实现后处理等功能的。
要让 volume 生效,需要为其指定 VolumeProfile
资产。
VolumeProfile
中包含了要“叠加”的效果清单。
为了避免在关卡设计、搭建的过程中,各种 VolumeProfile
相互冲突、资产管理混乱,撰此手册以指导之。
本项目工程中可能出现的 VolumeProfile
(视觉配置),按语义区分,一共有四种:全局、场景、关卡、区域。
全局视觉配置是从游戏启动到退出一直生效且唯一的视觉配置。 它有一项非常重要的责任:统一全局应当统一的视觉环境配置项。 这些项包括:
- 环境光照。
- 曝光。
要统一它们的原因主要是因为,游戏的关卡加载模块并非基于 scene 的,而是基于 level prefab 的。 如果每个 prefab 里都有自定义的视觉环境配置项,那么在关卡加载时,就会出现视觉环境的突变。 这是不想要的,因此必须有一个统一配置的地方。
全局视觉配置的 Volume
应当作为 GameManager
的 prefab 的子物体出现(注意是要应用到 prefab 里的而不是仅仅是场景里的 override)。
这是因为,GameManager
符合“从游戏启动到退出一直生效且唯一”的设定:即使在关卡加载的过程中不小心加载了重复的实例,后来者也会立马自毁。
全局视觉配置的 VolumeProfile
资产是唯一的,存放于 Assets/Configs/Rendering/
下。
此路径下应当只存在这一个 VolumeProfile
实例,任何多余的都应当立即清除。
场景视觉配置是仅在某些场景(scene)里生效的全局视觉配置。 它们主要存在于用来测试特殊视觉风格的场景里,作为对全局视觉配置的补充或修改。
如上所述,游戏的关卡加载模块是基于 level prefab 的。
这意味着,如果场景特异的 Volume
没有应用到 level prefab 里,那么在从别的场景中启动的游戏运行时载入新的关卡,就不会使得这些场景特异的 Volume
生效。
这与“测试特殊视觉风格”的目的相合。
场景视觉配置的 Volume
应当作为场景中的物体出现,绝不应当应用到 GameManager
或 level prefab 中。
场景视觉配置的资产存放于 Assets/Scenes/[场景名]/
下。
关卡视觉配置是对整个 level prefab 生效的“关卡默认”视觉配置。
它们会随着关卡动态加载而加载,这意味着它们不应是 global 的,否则会在加载时造成视觉效果的突变。
关卡视觉配置应当存在于 level prefab 里(而不是场景中的 override); 它们应当是 local 的,只不过区域足够大到涵盖整个关卡。
有时,根据关卡设计的需要,多个关卡可能会互相穿插。
这种情况,可以在创建每个关卡的 VolumeProfile
后,应用到多个零碎的 Volume
上。
如果仍然用一个大 Volume
的做法,会导致在重叠区域同时应用两套视觉效果的错误结果。
关卡视觉配置的资产存放于 Assets/Levels/[关卡名]/
下。
区域视觉配置是关卡视觉配置的局部版。
根据关卡设计,关卡中的某些区域可能会有独特的视觉风格。
这可以通过在 level prefab 里创建小范围的局部 Volume
覆盖关卡的默认视觉配置来实现。
区域视觉配置的资产,同关卡视觉配置一样,存放于 Assets/Levels/[关卡名]/
下。