ポストエフェクトとは
主にシェーダーを用いて、カメラの写している画像を加工し画面に表示させることです
海外の記事では「Image Effect」と記述されることが多いため、海外の記事を探す場合は
「Post Effect」ではなく「Image Effect」で探したほうが記事が見つかるかもしれません
ポストエフェクト利用方法
ポストエフェクトを利用するには Camera がついているオブジェクトに
OnRenderImage
のメソッドがあるスクリプトをアタッチすることで利用できます
MonoBehaviour-OnRenderImage(RenderTexture,RenderTexture) - Unity スクリプトリファレンス
OnRenderImage
内 で Graphics.Blit
を利用してマテリアルを介してのテクスチャコピーを行うことで
カメラが写している画像を加工して表示することができます
汎用的なポストエフェクトのコード
using UnityEngine; [RequireComponent(typeof(Camera))] [ExecuteInEditMode] public class PostEffect : MonoBehaviour { [SerializeField] [HideInInspector] private Camera _camera; [SerializeField] private Material _material; #if UNITY_EDITOR private void Reset() { _camera = GetComponent<Camera>(); } #endif private void OnRenderImage(RenderTexture source, RenderTexture destination) { if (_material == null) { Graphics.Blit(source, destination); return; } Graphics.Blit(source, destination, _material); } }
動作確認
以前投稿したHSV変換のシェーダーを利用してみます
画像のHSV変換シェーダー - うにてぃブログ
マテリアルの変更に応じて画面の表示を変えることができました
※ 画面全体の描画になるため、解像度が高いほど高負荷になるので利用には注意が必要です