Unclaimed Package Is this your package? Claim it to unlock full analytics and manage your listing.
Claim This Package

Install via UPM

Add to Unity Package Manager using this URL

https://www.pkglnk.dev/staticbluredscreen.git

README Markdown

Copy this to your project's README.md

Style
Preview
pkglnk installs badge
## Installation

Add **StaticBluredScreen** to your Unity project via Package Manager:

1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/staticbluredscreen.git
```

[![pkglnk](https://www.pkglnk.dev/badge/staticbluredscreen.svg?style=pkglnk)](https://www.pkglnk.dev/pkg/staticbluredscreen)

README

StaticBluredScreen

NOTE: This project has been integrated into UIEffect, so we are NOT continuing development in this repository.



<< Description | WebGL Demo | Download | Usage | Change log >>







Overview

image

静的なブラースクリーンを表示します. ポストエフェクト等によるリアルタイムブラーとは異なり、ある時点でのレンダリング結果に対するブラーのみを提供します.

  1. ブラー処理用のCameraが不要です.
  2. ブラーは常時実行されません. テクスチャ更新を実行したあと1度だけ実行されます.
  3. 縮小バッファを利用することで、メモリサイズを小さく抑えます.
  4. スクリーン | ブラー | ダイアログ1 | ブラー | ダイアログ2 ... のように、重ねて表示できます.
  5. 激しい動きのあるオブジェクトがスクリーン上にある場合、ブラーテクスチャにズレが発生し得ます.

How To Work?

カメラに対し以下のコマンドバッファを1フレームだけ割り当てています.
縮小バッファを利用してブラーを適用し、出力先RTにコピーしているだけです.
その後、出力先RTをRawImage等で表示させると、ブラーが画面に適用されているように見えます.
ブラーが適用されるのはあくまで縮小バッファであり、レンダリング負荷がほとんどかからないことに注意してください.

// テンポラリRTに対するIDを生成.
int copyId = Shader.PropertyToID("_ScreenCopy");
int blurId = Shader.PropertyToID("_StaticBlur");

// ブラーシェーダを割り当てたマテリアルを生成.
Material materialBlur = new Material(shaderBlur);

// 出力先RTを生成.
RenderTexture rt = new RenderTexture(w, h);

// カメラのレンダリング結果をRTにコピー.
buffer = new CommandBuffer();
buffer.GetTemporaryRT(copyId, -1, -1, 0, FilterMode.Bilinear);
buffer.Blit(BuiltinRenderTextureType.CurrentActive, copyId);

// 縮小バッファを利用して、ブラーシェーダを適用.
buffer.GetTemporaryRT(blurId, w/4, h/4, 0, FilterMode.Bilinear);
buffer.Blit(copyId, blurId, materialBlur);

// 縮小バッファから出力先RTにコピー.
buffer.Blit(blurId, rtId);

// テンポラリRTを解放.
buffer.ReleaseTemporaryRT(blurId);
buffer.ReleaseTemporaryRT(copyId);

// コマンドバッファをカメラに追加.
_camera.AddCommandBuffer(CameraEvent.AfterImageEffects, buffer);

Requirement

  • Unity5.5+ (included Unity 2017.x)
  • No other SDK

Usage

  1. Download StaticBluredScreen.unitypackage and install to your project.
  2. Attach StaticBluredScreen component to GameObject.
  3. In playmode, call StaticBluredScreen.UpdateTexture.
  4. Enjoy!

image

Demo

demo

ダイアログを開くタイミングで静的なスクリーンブラーを生成し、アニメーションでフェードイン/アウトするデモです.
シーン内にカメラは1つしかありません.
ダイアログが2つ重なったとき、更にブラーを生成しています.

License

MIT
© UTJ/UCL

Author

mob-sakai

See Also

Comments

No comments yet. Be the first!