全屏毛玻璃模糊效果
原理
全屏毛玻璃模糊效果的原理是使用RenderTexture来捕捉当前屏幕的画面,然后使用模糊算法对RenderTexture图像进行模糊处理,最后将处理后的图像显示在屏幕上。这种方法可以实现全屏的毛玻璃效果,但是需要较高的性能。
部分对象毛玻璃模糊的原理是使用两个摄像机,一个摄像机只渲染需要模糊的物体,另一个摄像机渲染其他物体和背景。然后使用RenderTexture来捕捉第二个摄像机渲染的画面,对RenderTexture图像进行模糊处理,最后将处理后的图像作为材质贴在第一个摄像机渲染的物体上。这种方法可以实现部分物体的毛玻璃效果,但是需要较高的性能。
完整代码
// 创建一个RenderTexture作为中间渲染目标
private RenderTexture rt;
// 获取需要模糊的物体
private GameObject targetObj;
// 获取需要模糊的摄像机
private Camera blurCamera;
void Start()
{
// 创建RenderTexture,分辨率可以根据需要调整
rt = new RenderTexture(Screen.width, Screen.height, 0);
// 获取需要模糊的物体
targetObj = GameObject.Find("TargetObject");
// 获取需要模糊的摄像机
blurCamera = GameObject.Find("BlurCamera").GetComponent();
// 将RenderTexture作为BlurCamera的渲染目标
blurCamera.targetTexture = rt;
// 将渲染后的图像作为材质贴在TargetObject上
targetObj.GetComponent().material.SetTexture("_BlurTex", rt);
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
// 对RenderTexture图像进行模糊处理
Graphics.Blit(src, rt, blurMaterial);
// 将处理后的图像显示在屏幕上
Graphics.Blit(rt, dest);
}
部份对象毛玻璃模糊, 主体不模糊
原理
部分对象毛玻璃模糊的原理是使用两个摄像机,一个摄像机只渲染需要模糊的物体,另一个摄像机渲染其他物体和背景。然后使用RenderTexture来捕捉第二个摄像机渲染的画面,对RenderTexture图像进行模糊处理,最后将处理后的图像作为材质贴在第一个摄像机渲染的物体上。这种方法可以实现部分物体的毛玻璃效果,但是需要较高的性能。
完整代码
// 创建一个RenderTexture作为中间渲染目标
private RenderTexture rt;
// 获取需要模糊的物体
private GameObject targetObj;
// 获取需要模糊的摄像机
private Camera blurCamera;
void Start()
{
// 创建RenderTexture,分辨率可以根据需要调整
rt = new RenderTexture(Screen.width, Screen.height, 0);
// 获取需要模糊的物体
targetObj = GameObject.Find("TargetObject");
// 获取需要模糊的摄像机
blurCamera = GameObject.Find("BlurCamera").GetComponent();
// 将RenderTexture作为BlurCamera的渲染目标
blurCamera.targetTexture = rt;
// 将渲染后的图像作为材质贴在TargetObject上
targetObj.GetComponent().material.SetTexture("_BlurTex", rt);
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
// 对RenderTexture图像进行模糊处理
Graphics.Blit(src, rt, blurMaterial);
// 将处理后的图像显示在屏幕上
Graphics.Blit(rt, dest);
}
利用URP特性实现
领取专属 10元无门槛券
私享最新 技术干货