本页面介绍了如何使用体积支持来创建自定义后期处理效果。
URP 提供了自定义后期处理效果模板。模板中的实现包括渲染器功能 (Renderer Feature)(可在其中注入自定义效果的代码)和实现与体积 (Volume) 组件交互的代码的脚本。
要使用模板来创建效果,请选择以下菜单项:
Unity 在 Assets 文件夹中创建了两个新脚本:包含渲染器功能模板的脚本和体积组件脚本。
模板包含可在屏幕上反转颜色的示例效果实现。
在渲染器功能中,可以在 Create 方法中定义自定义效果的自定义材质或实现效果逻辑的渲染通道。
渲染器功能脚本包含 ScriptableRenderPass 实现。
您可以在渲染通道代码中为以下区域的自定义效果设置着色器属性:
#region PASS_SHARED_RENDERING_CODE
渲染通道包含以下两个区域。如果项目禁用了兼容性模式,Unity 会选择 PASS_RENDER_GRAPH_PATH 区域并使用渲染图 API,否则使用 PASS_NON_RENDER_GRAPH_PATH 区域。
#region PASS_NON_RENDER_GRAPH_PATH
#region PASS_RENDER_GRAPH_PATH
要在体积组件上设置效果属性,请在 AddRenderPasses 方法中修改以下行:
NewPostProcessEffectVolumeComponent myVolume = VolumeManager.instance.stack?.GetComponent<NewPostProcessEffectVolumeComponent>();
if (myVolume == null || !myVolume.IsActive())
s_SharedPropertyBlock.SetFloat("_Intensity", myVolume.intensity.value);