うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】ポストエフェクト利用時のメモリ

調査

ポストエフェクトを利用した際のメモリを見てみると
利用してないときと比べて「TempBuffer 337 720*1280」が増えています

f:id:hacchi_man:20200515010336p:plain:h200 f:id:hacchi_man:20200515005934p:plain:h200

これは ポストエフェクトを利用する際に OnRenderImage を定義するのですが
このタイミングで ポストエフェクトを適応する RenderTexture が生成されるので
その分メモリに乗ってしまいます

※Unity上でやってるので実機だと違うと思いますが、soruceの方は GameView RT だと思われます

   private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {  
        Graphics.Blit(source, destination, _material);
    }

そのため、複数のカメラで同時にポストエフェクトを利用した際に携帯端末の場合
アプリがクラッシュする可能性があるので、注意して利用しましょう

RenderTextureのサイズ

この RenderTextureのサイズは画面の解像度に合わせて変わるので
例えば2960 * 1440 の場合は 32.5MB のサイズがメモリに乗ることになるので注意が必要です

f:id:hacchi_man:20200515012039p:plain

複数のポストエフェクト

基本的にはやらないと思いますが、ポストエフェクトのコンポーネントを複数利用した場合
追加個数分の「ImageEffects Temp」がメモリに乗っていました

これは半分のサイズだったので、何かしら内部で最適化でも行われているのでしょうか

f:id:hacchi_man:20200515012229p:plain