为了使 URP 为 ShaderLabUnity 用于定义着色器对象结构的语言。 更多信息
参见 术语表 着色器在 GPU 上运行的程序。 更多信息
参见 术语表 渲染 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
}
}
}
有关为诸如 Alpha 剪切、LOD细节层次 (LOD) 技术是一种优化,当游戏对象与摄像机的距离增加时,它会减少 Unity 必须为其渲染的三角形数量。 更多信息
参见 术语表 交叉淡入淡出或 Alembic 动画等功能添加运动向量通道支持的示例,请参阅 URP 预制 ShaderLab 着色器中 MotionVectors
通道的实现,例如 Unlit.shader
文件。您的 MotionVectors
通道的渲染应与您的非运动向量通道匹配,并应反映任何自定义变形和/或顶点动画通道正在执行的操作。
如果自定义着色器仅适用于具有变换运动或蒙皮动画的对象,而不使用 Alpha 剪切、LOD 交叉淡入淡出、Alembic 动画、自定义变形或顶点动画,则 URP 提供的运动向量回退着色器可能就足够了。要添加预制的回退着色器,请将以下 ShaderLab 命令添加到您的 SubShader 块中
Shader “Example/MyCustomShaderWithPerObjectMotionVectorFallback"
{
SubShader
{
// ...other passes, SubShader tags, and commands
UsePass "Hidden/Universal Render Pipeline/ObjectMotionVectorFallback/MOTIONVECTORS"
}
}
注意:在 2023.2 之前的 Unity 版本中,URP 会自动为所有不包含带有 MotionVectors
LightMode 标记 的通道的 SubShader 块使用回退通道。从 Unity 2023.2 开始,出于以下原因禁用此回退逻辑