Unity 之 后处理URP工程实现边角压暗效果
- 一,URP工程配置
- 二,代码调用
- 三,实现原理
一,URP工程配置
-
在Hierarchy界面,创建空物体
GameObject
,右键选择Volume
菜单下的Global Volume
。
创建后的结果:
-
设置Volume的Profile,点击右侧的New新创建一个配置文件,或者新建文件夹右键选择
Create
->Volume Profile
:
创建完成后赋值过去:
-
添加边角压暗效果:Vignette组件,
Add Override
->Post- processing
->Vignette
:
-
组件内容,从上到下依次是:颜色,中心点,强度,平滑度,圆
-
开启摄像机的Post Processing选项:
-
运行看下效果:
二,代码调用
创建代码命名为PostProcessingProfile
,并挂载到Global Volume
物体上如下图:
代码内容如下:
测试用例:按下A设置强度为1显示效果,按下S设置强度为0关闭效果:
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class PostProcessingProfile : MonoBehaviour
{
// 后处理的配置容器
private Volume _volume;
// 根据Inspector面板上的组件创建对应类型变量
private Vignette _vignette;
void Start()
{
// 获取容器
_volume = GetComponent<Volume>();
// 获取此容器下添加的组件
_volume.profile.TryGet(out _vignette);
}
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
SetIntensity(1);
}
if (Input.GetKeyDown(KeyCode.S))
{
SetIntensity(0);
}
}
// 设置颜色
void SetIntensity(Color color)
{
_vignette.color.Override(color);
}
// 设置中心点
void SetIntensity(Vector2 vector2)
{
_vignette.center.Override(vector2);
}
// 设置强度 x:0~1
void SetIntensity(float x)
{
_vignette.intensity.Override(x);
}
// 设置平滑度 x:0~1
void SetSmoothness(float x)
{
_vignette.smoothness.Override(x);
}
// 是否是正圆
void SetRounded(bool isRound)
{
_vignette.rounded.Override(isRound);
}
}
三,实现原理
相关推荐:Unity 之 Post Processing后处理不同项目配置(URP项目配置)
Post Processing
后期处理是指在摄影机绘制场景之后但在屏幕上渲染场景之前出现的全屏图像处理效果的通用术语。后期处理可以大大提高产品的视觉效果,只需很少的设置时间。
Post Processing 官方文档: https://docs.unity3d.com/Packages/com.unity.postprocessing@3.2/manual/index.html