Unityで曇りガラスのぼかし効果を実装する

全画面曇りガラスのぼかし効果

原理

全画面曇りガラスのぼかし効果の原理は、RenderTexture を使用して現在の画面イメージをキャプチャし、次にぼかしアルゴリズムを使用して RenderTexture イメージをぼかし、最後に処理されたイメージを画面に表示することです。この方法では全画面のすりガラス効果を実現できますが、より高いパフォーマンスが必要です。

一部のオブジェクトのすりガラスぼかしの原理は、2 台のカメラを使用することです。1 台のカメラはぼかしが必要なオブジェクトのみをレンダリングし、もう 1 台のカメラは他のオブジェクトと背景をレンダリングします。次に、RenderTexture を使用して 2 番目のカメラでレンダリングされたイメージをキャプチャし、RenderTexture イメージをぼかし、最後に処理されたイメージをマテリアルとして 1 番目のカメラでレンダリングされたオブジェクトに貼り付けます。この方法では、一部のオブジェクトのすりガラス効果を実現できますが、より高いパフォーマンスが必要です。

完全なコード

// 中間レンダリング ターゲットとして RenderTexture を作成します
private RenderTexture rt;

// ぼかしが必要なオブジェクトを取得します
private GameObject targetObj;

// ぼかしが必要なカメラを取得します
private Camera BlurCamera;

void Start()
{ // Create RenderTexture、解像度は必要に応じて調整できますrt = new RenderTexture(Screen.width, Screen.height, 0); // ぼかしが必要なオブジェクトを取得しますtargetObj = GameObject.Find("TargetObject"); // Getぼかす必要があるカメラBlurCamera = GameObject.Find("BlurCamera ").GetComponent<Camera>(); // BlurCamera のレンダリング ターゲットとして RenderTexture を使用します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); }







一部のオブジェクトは曇りガラスでぼやけていますが、本体はぼやけていません。

原理

一部のオブジェクトのすりガラスぼかしの原理は、2 台のカメラを使用することです。1 台のカメラはぼかしが必要なオブジェクトのみをレンダリングし、もう 1 台のカメラは他のオブジェクトと背景をレンダリングします。次に、RenderTexture を使用して 2 番目のカメラでレンダリングされたイメージをキャプチャし、RenderTexture イメージをぼかし、最後に処理されたイメージをマテリアルとして 1 番目のカメラでレンダリングされたオブジェクトに貼り付けます。この方法では、一部のオブジェクトのすりガラス効果を実現できますが、より高いパフォーマンスが必要です。

完全なコード

// 中間レンダリング ターゲットとして RenderTexture を作成します
private RenderTexture rt;

// ぼかしが必要なオブジェクトを取得します
private GameObject targetObj;

// ぼかしが必要なカメラを取得します
private Camera BlurCamera;

void Start()
{ // Create RenderTexture、解像度は必要に応じて調整できますrt = new RenderTexture(Screen.width, Screen.height, 0); // ぼかしが必要なオブジェクトを取得しますtargetObj = GameObject.Find("TargetObject"); // Getぼかす必要があるカメラBlurCamera = GameObject.Find("BlurCamera ").GetComponent<Camera>(); // BlurCamera のレンダリング ターゲットとして RenderTexture を使用します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); }








URP機能を使用して実装

6db35c17efd6b9e7d8968df425aad0a8.jpeg

66dc3f0aa2becd52cc3f29dbe222b03a.jpeg

1d623be5098f100bd4e05b7d60f28495.jpeg

e42e8222a8c49c7467e08fd9ca341b4d.jpeg

642157c4d11f914d38bc7ef6b87861f1.jpeg

おすすめ

転載: blog.csdn.net/shguxudong11/article/details/129422391