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 以降、このフォールバックのロジックは以下の理由により無効になりました。