OnRenderImage()を定義するコストについて
ふと、OnRenderImageの第1引数をデバッガで参照した時にこんな記述が、
「ImageEffects Temp」…? ふむ、定義した覚えのないRenderTextureですが、Unityちゃんが自動で定義してくれたんだろう。
ん?ということは、OnRenderImage()を定義しただけで負荷が増すということか??
ということで調べてみました。
☆OnRenderImage()を定義していない場合
FrameDebug
プレーンなプロジェクトなので画面クリアだけ
Profiler-Memory-Detailed
RenderTextureは1枚
☆OnRenderImageを定義した場合
FrameDebug
なんか描画パス増えてる。
Profiler-Memory-Detailed
RenderTextureに ImageEffects Temp が2つ増えてる。 2つ!?(AA用?)
という事で、OnRenderImage()を定義しただけで、
・描画パスが増える
・RenderTextureが2つ増える(多分大きさは画面サイズに依存)
ようです。これってモバイル系だと結構無視できない負荷に思えます。
これがモバイルでも同じように動いているなら、特に必要ないようであればOnRenderImage()は定義しないほうが良さそう。
『そんなこと言われたって、スクリーンをキャプチャしなきゃ、色々なスクリーンエフェクトをかけられないじゃないか!』
…という方はOnRenderImage()ではなく、OnPostRender()でScreen(フレームバッファ)の画像をRenderTextureにコピーすれば良いかと。