OnPostRender()でのスクリーンキャプチャ
前回、スクリーンエフェクトをかける場合は、
OnRenderImage()で行うと重そう(…と言うより、OnRenderImage()を定義するだけでも重そう)だから、
OnPostRender()でスクリーンキャプチャして画像加工すればいいんじゃない?
と書きましたが、じゃあOnPostRender()でスクリーンキャプチャってどうすれば良いのよ?
という事で、コード書きました。
public class OnPostRenderCapture : MonoBehaviour
{
[SerializeField]
private RenderTexture captureImage = null;
void OnPostRender()
{
if (captureImage == null)
{
return;
}
Graphics.Blit(null, captureImage);
}
}
このコンポーネントをカメラにくっつければOK。captureImageにはInspectorでRenderTextureをくっつけておくか、Awake()かStart()でRenderTextureを作ってくっつけるかするのを忘れすに!
…で、多分この画像をイタに貼っつけると、機種依存で上下が反転したりするので
Unity - マニュアル: プラットフォーム別のレンダリングの違い
この辺を見て、表示面用に上下反転させるシェーダを用意すると良いでしょう。
これを使えばわざわざCameraのRenderTargetにRenderTextureを入れなくても良いから楽です。