Version: Unity 6.0 (6000.0)
言語 : 日本語
URP のモーションベクトルレンダーパス
URP のシェーダーのサンプルモーションベクトル

URP のカスタムシェーダーでのモーションベクトルテクスチャの出力

URP が ShaderLab シェーダーの MotionVectors パスを描画するには、アクティブな SubShader に以下の LightMode タグを持つパスが含まれていることを確認してください。

Tags { "LightMode" = "MotionVectors" }

例:

Shader “Example/MyCustomShaderWithPerObjectMotionVectors"
{
    SubShader
    {
        // ...other passes, SubShader tags and commands
    
        Pass
        {
            Tags { "LightMode" = "MotionVectors" }
            ColorMask RG
            
            HLSLPROGRAM
            
            // Your shader code goes here.
            
            ENDHLSL
        }
    }
}

アルファ クリッピング、LOD クロスフェード、Alembic アニメーションなどの機能にモーションベクトルパスのサポートを追加する例については、URP の構築済み ShaderLab シェーダー (Unlit.shader ファイルなど) のMotionVectors パスの実装を参照してください。MotionVectors パスのレンダリングは、モーションベクトルでないパスと一致し、パスが実行しているカスタムデフォーメーションや頂点アニメーションを反映している必要があります。

カスタムシェーダーが、アルファクリッピング、LOD クロスフェード、Alembic アニメーション、カスタムデフォーメーション、または頂点アニメーションを使用せずに、Transform モーションまたはスキンアニメーションを持つオブジェクトのみを対象としている場合は、URP が提供するモーションベクトルのフォールバックシェーダーで十分です。構築済みのフォールバックシェーダーを追加するには、以下の ShaderLab コマンドを SubShader ブロックに追加します。

Shader “Example/MyCustomShaderWithPerObjectMotionVectorFallback"
{
    SubShader
    {
        // ...other passes, SubShader tags, and commands
    
        UsePass "Hidden/Universal Render Pipeline/ObjectMotionVectorFallback/MOTIONVECTORS"
    }
}

ノート:Unity 2023.2 より前のバージョンでは、MotionVectors LightMode タグが付いたパスを持たないすべての SubShader ブロックに対して、URP が自動的にフォールバックパスを使用します。Unity 2023.2 以降、このフォールバックのロジックは以下の理由により無効になりました。

  • フォールバックロジックは、URP 独自のマテリアルに対する初期実装の詳細にすぎなかった。
  • URP マテリアルは、アルファクリップ、LOD クロスフェード、Alembic アニメーションなどの機能をサポートするためにマテリアルタイプ固有のモーションベクトルパスを使用するようになり、フォールバックは廃止された。
  • フォールバックロジックは、適用できないコンテンツ (オブジェクトのモーションベクトルを描画すべきでないデカールなど) に対して、意図しないビジュアルアーティファクトを発生させていた。
URP のモーションベクトルレンダーパス
URP のシェーダーのサンプルモーションベクトル