【Unity】Shader:GrabPassの名前を指定する、しない場合の違い

DEVELOP, Unity

直前にレンダリングしたコンテンツにアクセスできるGrabPass。

ShaderLab: GrabPass – Unity マニュアル

今更かもしれませんが、 GrabPass タグに名前指定ができることに気づきました。普段、画面のガウス処理を入れる時なんかでは

GrabPass{}

これで事足りていました。では、GrabPass タグに名前を指定するとどうなるあかというと

GrabPass{
    "_BackupGrabPassTexture"
}
sampler2D _BackupGrabPassTexture;

1フレームに1度だけテクスチャを取得し使いまわす様になります。従って、同じRenderTextureの内容で問題ない表現をする場合は、名前を指定した方が効率が良く負荷が低いと言えます。

意図した通りにテクスチャが使いまわされているかどうかの確認は、プロファイラで見てみるとGrabTextureの記述があるのですぐ確認できます。

Posted by kazupon