C++幼女先輩

プログラミング成分多め

【UNITY】PostProcess

イメージエフェクト

ってUNITYでは 言うらしいよ ポストプロセスの事

概要

ポストプロセスに関しては ご存知と思うが UNITYは基本的に オブジェクトにスクリプトをくっつけていくタイプだ

UNITYではポストプロセスはカメラにつけるっぽい

MonoBehaviour.OnRenderImage(RenderTexture,RenderTexture) を実装したスクリプトを、カメラと同じ階層のGameObjectに入れれば ポストプロセスとして成立する

スクリプト作成

using UnityEngine;

[RequireComponent(typeof(Camera))]
//public abstract class Compose : MonoBehaviour
public class Compose : MonoBehaviour
{
    private Material _material;


    public string ShaderName;

    protected Material Material { get { return _material; } }


    protected virtual void Awake()
    {
        Shader shader = Shader.Find(ShaderName);
        _material = new Material(shader);
    }

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

}

上記でかいたように OnRenderImageを実装する

sourceがエフェクト前の画像であり destinationにポストエフェクト適応させた出力を行う

ShaderNameプロパティで指定したシェーダーを読み込み それを実行している

Shaderは割愛。好きに書けばいい

スクリプト配置

GameObjectを作りそこにスクリプトをアタッチ そして 同じレイヤーにカメラを置けば完成