unity中實現毛玻璃模糊效果
全屏毛玻璃模糊效果
原理
全屏毛玻璃模糊效果的原理是使用RenderTexture來捕捉當前屏幕的畫面,然后使用模糊算法對RenderTexture圖像進行模糊處理,最后將處理后的圖像顯示在屏幕上。這種方法可以實現全屏的毛玻璃效果,但是需要較高的性能。
部分對象毛玻璃模糊的原理是使用兩個攝像機,一個攝像機只渲染需要模糊的物體,另一個攝像機渲染其他物體和背景。然后使用RenderTexture來捕捉第二個攝像機渲染的畫面,對RenderTexture圖像進行模糊處理,最后將處理后的圖像作為材質貼在第一個攝像機渲染的物體上。這種方法可以實現部分物體的毛玻璃效果,但是需要較高的性能。
完整代碼
// 創(chuàng)建一個RenderTexture作為中間渲染目標
private RenderTexture rt;
// 獲取需要模糊的物體
private GameObject targetObj;
// 獲取需要模糊的攝像機
private Camera blurCamera;
void Start()
{
// 創(chuàng)建RenderTexture,分辨率可以根據需要調整
rt = new RenderTexture(Screen.width, Screen.height, 0);
// 獲取需要模糊的物體
targetObj = GameObject.Find("TargetObject");
// 獲取需要模糊的攝像機
blurCamera = GameObject.Find("BlurCamera").GetComponent<Camera>();
// 將RenderTexture作為BlurCamera的渲染目標
blurCamera.targetTexture = rt;
// 將渲染后的圖像作為材質貼在TargetObject上
targetObj.GetComponent<Renderer>().material.SetTexture("_BlurTex", rt);
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
// 對RenderTexture圖像進行模糊處理
Graphics.Blit(src, rt, blurMaterial);
// 將處理后的圖像顯示在屏幕上
Graphics.Blit(rt, dest);
}
部份對象毛玻璃模糊, 主體不模糊
原理
部分對象毛玻璃模糊的原理是使用兩個攝像機,一個攝像機只渲染需要模糊的物體,另一個攝像機渲染其他物體和背景。然后使用RenderTexture來捕捉第二個攝像機渲染的畫面,對RenderTexture圖像進行模糊處理,最后將處理后的圖像作為材質貼在第一個攝像機渲染的物體上。這種方法可以實現部分物體的毛玻璃效果,但是需要較高的性能。
完整代碼
// 創(chuàng)建一個RenderTexture作為中間渲染目標
private RenderTexture rt;
// 獲取需要模糊的物體
private GameObject targetObj;
// 獲取需要模糊的攝像機
private Camera blurCamera;
void Start()
{
// 創(chuàng)建RenderTexture,分辨率可以根據需要調整
rt = new RenderTexture(Screen.width, Screen.height, 0);
// 獲取需要模糊的物體
targetObj = GameObject.Find("TargetObject");
// 獲取需要模糊的攝像機
blurCamera = GameObject.Find("BlurCamera").GetComponent<Camera>();
// 將RenderTexture作為BlurCamera的渲染目標
blurCamera.targetTexture = rt;
// 將渲染后的圖像作為材質貼在TargetObject上
targetObj.GetComponent<Renderer>().material.SetTexture("_BlurTex", rt);
}
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
// 對RenderTexture圖像進行模糊處理
Graphics.Blit(src, rt, blurMaterial);
// 將處理后的圖像顯示在屏幕上
Graphics.Blit(rt, dest);
}