ShaderLab文法: UsePass
ShaderLab文法: SubShaderタグ

ShaderLab構文: GrabPass

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

GrabPassは特別のパスタイプで,描画されるときの画面のコンテンツを,テクスチャ内に掴みとります。このテクスチャは後続プロセスで高度な画像ベースのエフェクトに使用できます。

文法

GrabPassはsubshader の中にあります。二つの形式のいずれかをとります:

  • GrabPass { } と指定し,単に現在の画面コンテンツをテクスチャ内に掴みとります。このテクスチャは後続のパスで_GrabTexture でアクセスすることができます。注意:この形式のGrap Passは効果な画面の掴みとり処理を使用する各オブジェクトごとに行います。
  • GrabPass { "TextureName" } により画面コンテンツをテクスチャ内に掴みとりますが,フレームごとに1回のみ,指定のテクスチャ名を使用する最初のオブジェクト分のみ,実施します。テクスチャは後続のパスで指定のテクスチャ名でアクセスすることが出来ます。シーンでGrab Passを使用するオブジェクトが複数ある場合に効率的な方法です。

さらに,GrabPass はName およびTags コマンドを使用することが出来ます。

次の例は,前にレンダリングされたカラーを反転する高価な方法です:

Shader "GrabPassInvert" {
    SubShader {
        // Draw ourselves after all opaque geometry
        Tags { "Queue" = "Transparent" }

        // Grab the screen behind the object into _GrabTexture
        GrabPass { }

        // Render the object with the texture generated above, and invert it's colors
        Pass {
            SetTexture [_GrabTexture] { combine one-texture }
        }
    }
}

このシェーダには二つのパスがあります:最初のパスはレンダリングのときにオブジェクトにある全てを掴みとり,次にをそれを二つめのパスで適用します。当然,同じエフェクトはより安価にinvertblend mode を使用して得ることが出来ます。

関連項目

ShaderLab文法: UsePass
ShaderLab文法: SubShaderタグ