かりんちゃんの随心遊戯日誌

ゲームの日記、たまに政治の話、香港の話

UIまでブラーする方法

先日仕事で残された課題として、UIまでブラーするのはどうするべきか…

一つ方法を思いついた

 

もう一つCanvasを作って、背景系のUI(つまりブラーしたいUI)をそこに移って、さらにそのCanvasの一番下では全画面をカバーするRaw Imageを作成する。

そして、元のメインカメラでレンダリングテスクチャに出力し、それをRaw Imageのテスクチャに設定する。

そこでもう一つカメラを作ってCanvasだけ映るようにする。

つまり、RenderPassがブラーするものを、背景Canvasだけにすること。

そして最後では背景CanvasのRender Cameraをメインカメラにセットする。で、メインカメラのCulling Maskは背景Canvasのレイヤー(ここで背景Canvasだけ新たにレイヤーを作成する)にする。

 

レンダリングテスクチャのAspect Ratioはスクリプトからじゃないと正方形になっちゃうので、そこらへんはスクリプトから生成するほうが良いだろうけど、作業には不便なので、Startだけ強引に修正させた。

 

これで一応、できたんですけど(ボタンまでブラーできる)

一応、実現は可能ですが…

ただ、うちのゲーミングPCですら重い…(対象デバイスはポンコツAndroidなので、重いのはダメなのだ…)

うん、ブラーするUIの量はそこまで多くないし、これに変えるとカメラ関連のスクリプトも修正しないといけない(とくにPrefabの生成はオブジェクトとScreenPosに合わせるものがあるので、それはわりと)。そもそも目的は視認性だけなので、ここまで時間と努力をかけるのはやはり間違っているよな

どうしても!と言われたらこの方法で実装するが、どう考えても限られた性能リソースを他の事に回すほうが良いかと思いますね…

 

他になにか簡単な良い方法ないかな…