📜  urp 设置后处理值 - C# (1)

📅  最后修改于: 2023-12-03 15:35:32.164000             🧑  作者: Mango

urp 设置后处理值 - C#

在Unity中,Universal Render Pipeline (URP) 是一个现代化渲染管线。URP提供了丰富的功能来实现高保真度的场景渲染,并且具有与Unity兼容的易用性。在URP中,通过在图形渲染过程的不同阶段插入自定义代码来实现后处理效果。在本文中,我们将介绍如何在C#中设置URP后处理值。

URP 后处理

在Unity中,URP提供了多个渲染阶段,包括后处理阶段。后处理阶段在光栅化后的图像上执行,可以更改场景的颜色、深度和法线等数据。URP支持以下后处理效果:

  1. 材质后处理:在场景优化时,在材质之后应用各种效果。
  2. 全屏后处理:在相机完成渲染后对屏幕内容应用效果。
全屏后处理

使用URP对屏幕内容进行全屏后处理的代码片段如下:

using UnityEngine.Rendering.Universal;

//获取渲染管线
UniversalRenderPipelineAsset urpAsset = GraphicsSettings.renderPipelineAsset as UniversalRenderPipelineAsset;

//获取将在其上运行后处理的相机。
Camera camera = Camera.main;

//获取相机后处理程序
UniversalAdditionalCameraData cameraData = camera.GetComponent<UniversalAdditionalCameraData>();

//获取后处理堆栈,并在其开头添加新后处理堆。
cameraData.cameraStack.Clear();
cameraData.cameraStack.Add(urpAsset.postProcessingData.defaultStack);

上述代码从渲染管道资产获取对所需相机进行后处理的权限,获取在该相机上执行后处理的数据。然后将新后处理堆添加到后处理堆栈的开头。

材质后处理

对于在场景优化时在材质之后应用效果的情况,可以使用以下方法:

using UnityEngine.Rendering.Universal;

//获取渲染管线
UniversalRenderPipelineAsset urpAsset = GraphicsSettings.renderPipelineAsset as UniversalRenderPipelineAsset;

//获取用于渲染的材料
Material material = Resources.Load<Material>("MyPostProcessingMaterial");

//创建后处理实例
var postProcessRenderPass = new PostProcessRenderPass(urpAsset, "MyCustomPostProcess");

//将材质添加到实例
postProcessRenderPass.Enqueue(material, 0);

//将实例添加到相机渲染管道
cameraData.postProcessData.AddRenderPass(postProcessRenderPass);

上述代码从渲染管道资产获取对所需相机进行后处理的权利,并获取用于渲染场景的材料。然后创建后处理实例,并将其添加到相机渲染管道中。

结论

在本文中,我们学习了在C#中设置URP后处理值的基础知识。我们了解了URP提供的后处理效果,并学习了如何在全屏后处理和材质后处理中设置后处理值。这将帮助您改进游戏的视觉效果并使其更具吸引力。如果您想更深入地了解URP,则建议查看URP文档。