要让 URP 渲染__ ShaderLab__Unity 用于定义着色器对象结构的语言。更多信息
See in Glossary 着色器的 MotionVectors 通道,请确保其活动的子着色器包含具有以下 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
}
}
}
有关为 Alpha 裁剪、LOD 交叉淡入淡出或 Alembic 动画等功能添加运动矢量通道支持的示例,请参阅 URP 预构建的 ShaderLab 着色器(例如 Unlit.shader 文件)中的 MotionVectors 通道实现。MotionVectors 通道的渲染应该与非运动矢量通道匹配,并且应该反映通道执行的任何自定义变形和/或顶点动画。
如果自定义着色器仅适用于具有变换运动或蒙皮动画的对象,而不使用 Alpha 裁剪、LOD 交叉淡入淡出、Alembic 动画、自定义变形或顶点动画,URP 提供的运动矢量回退着色器可能就足够了。要添加预构建的回退着色器,请将以下 ShaderLab 命令添加到子着色器代码块中:
Shader “Example/MyCustomShaderWithPerObjectMotionVectorFallback"
{
SubShader
{
// ...other passes, SubShader tags, and commands
UsePass "Hidden/Universal Render Pipeline/ObjectMotionVectorFallback/MOTIONVECTORS"
}
}
注意:在早于 2023.2 的 Unity 版本中,URP 会自动对不带 MotionVectors LightMode 标签的通道的所有子着色器块使用回退通道。从 Unity 2023.2 开始,由于以下原因禁用此回退逻辑: