読者です 読者をやめる 読者になる 読者になる

ボアブログ

へっぽこUnityエンジニアの色々

ポーズ画面の仮実装

こんな感じのポーズ画面を実装しようと思いました。f:id:weakboar:20170312203009p:plain

  • ゲーム画面が停止する
  • ぼかす

この辺が必要な仕様です。また、実装にあたって下記の記事を参考にしました。その内ちゃんと勉強したいなぁ。

「いけにえと雪のセツナ」グラフィック解説

下準備

ポーズ画面実装にあたってグラフィック解説を参考に

  • カメラ1でモデルをRenderTextureに描画
  • カメラ2でRenderTextureを描画

というような構成にしました。記事を参考にやってみたけど合ってるのだろうか。

実際にぼかしてみる

ぼかし方は簡単に下記の通り

  1. Pauseを押したらカメラ1のenabledをfalseにする
  2. カメラ2のBlurコンポーネントのenabledをtrueにする
  3. Resumeを押したらカメラ1のenabledをtrueにする
  4. カメラ2のBlurコンポーネントのenabledをfalseにする

カメラ1を切ることでレンダリングコストが下がる事を期待している。カメラ1を切ってもRenderTextureには既に描画されているのでカメラ2にはカメラ1を切る直前の画面が描画され続ける。内部的には動いているが(本実装するときにはちゃんと止める)画面上は止まるのもちょっと良い。

比較

さて、実装自体は出来たわけだがパフォーマンス的に効果がないとやる意味も無いのでProfilerで比較してみた。比較対象は下記の通り。

  1. カメラ1をそのままゲーム画面に描画
  2. カメラ1にBlurをアタッチして画面をぼかす
  3. 本記事でのぼかししょり

f:id:weakboar:20170312205128p:plain f:id:weakboar:20170312205252p:plain f:id:weakboar:20170312205452p:plain

 CPU Usageは全体として下がっている。Scriptが若干上がっているのは気になる。もしかしたら誤差かもしれない。

 そして当然といえば当然なのだがRenderingのTrianglesとVerticesが著しく下がっている。モデルを描画しているカメラをオフにしているのだから当然である。Memoryは・・・上がっている・・・?

最後に

正直開発も初期段階で描画しているモデル数もMagicaVoxel製のものが1つとPlaneが1枚なので比較はあまり出来ていない感じはする。 とりあえず本記事の実装方法で進めていくけど今後効果が出ると・・・いいなぁ・・・!