Shader前回、CommandBufferの入門記事を書きました。light11.hatenadiary.comCommandBufferを使うと独自のタイミングでポストエフェクトを掛けることもできますが、ちょっとハマりポイントがあるのでメモします。Unity5.6.3簡単なポストエフェクトを掛けてみるまず、ポストエフェクト用のシェーダを用意します。}}中身としては色を反転しているだけです。次にこれをコマンドバッファから使います。一時テクスチャにポストエフェクトをかけつつレンダーターゲットに描画となります。一時テクスチャの取得方法は少し変わっていて、CommandBuffer.GetTemporaryRT()を使います。このメソッドの第一引数にはテクスチャのIDを渡します。このIDは任意ですが、Shader.PropertyToID()に任意の文字列を渡すことで取得します。第2引数と第3引数はwidthとheightですが、コマンドバッファを登録するカメラのサイズを使いたい場合には-1を渡します。このあたりはマニュアルに書かれています。docs.unity3d.comレンダリング結果は下図の右のようになります。前節のソースコードで、CameraのMSAAがONになっているときにさりげなくreturnしています。return;}これはMSAAが有効化されていると今のレンダーターゲットがうまく取れていないような挙動になることがあるためです。CameraEventの種類やプラットフォームによって取れたり取れなかったりも・・(ちゃんと検証はしてない)色々と試行錯誤されている方もいますが、ブラックボックスな部分も多いためMSAAはOFFのときのみ有効にしています。https://forum.unity.com/threads/commandbuffer-blit-isnt-stencil-buffer-friendly.432776/フォーラムでも議論されています。ステンシルバッファを使うポストエフェクトでステンシルバッファを使うのは結構大変、というか情報が錯綜している感がありますが、このCommandBufferを使う方法は安定しているように思います。ポストエフェクトのシェーダを書き換えればステンシルが使えます。}}レンダリング結果は次のようになります。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。Blur(渦巻ブラー)のポストエフェクトを実装する月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。