版本:Unity 6 (6000.0)
语言:English
设置着色器以需要着色器模型或 GPU 功能
设置着色器的渲染队列

设置着色器以需要包

一些 着色器在 GPU 上运行的程序。 更多信息
参见 术语表
需要同时支持多个 渲染管线一系列操作,用于获取场景的内容并在屏幕上显示它们。Unity 允许您从预构建的渲染管线中选择,或编写自己的渲染管线。 更多信息
参见 术语表
。通过向 子着色器通道 添加包要求,可以避免在着色器代码使用来自未安装的包的包含文件或需要特定版本的包进行编译时出现编译错误。

版本限制定义了一组版本范围。如果已安装的所需包的版本不在任何范围之内,则不满足包要求。类似地,如果要求指定了一组 Unity 版本限制,则当前版本的 Unity 也适用相同的限制。有关版本限制语法的详细信息,请参阅 版本语法

如果子着色器或通道声明了项目不满足的包要求,则 Unity 会将该子着色器或通道排除在进一步处理和编译之外。如果项目不包含所需的包,或者包含了但版本不兼容,就会发生这种情况。如果着色器不包含满足要求的单个子着色器,或者如果没有任何子着色器包含满足要求的通道,则 控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。 更多信息
参见 术语表
会显示警告消息。

注意:PackageRequirements 块必须位于子着色器或通道内所有其他声明之前。

示例

以下代码示例演示了如何在子着色器和通道中指定包要求。子着色器声明了名为“com.my.package”的包的单个包要求,并且可以与从 2.2.0 开始的任何版本的此包一起使用。子着色器有两个通道

  • 第一个通道需要

  • 版本在 10.2.1 到 11.0 之间的通用渲染管线包。

  • 版本为 3.2 或更高版本的 Text 网格Unity 的主要图形基元。网格构成了 3D 世界的大部分内容。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。 更多信息
    参见 术语表
    Pro 包。

  • 第二个通道需要

  • 版本在 8.0 到 8.5 之间的高清渲染管线包。

Shader "Examples/ExampleShader"
{
    SubShader
    {
        PackageRequirements
        {
            "com.my.package": "2.2"
        }
        Pass
        {
            PackageRequirements
            {
                "com.unity.render-pipelines.universal": "[10.2.1,11.0]"
                "com.unity.textmeshpro": "3.2"
            }

            // The rest of the code for the Pass
        }
        Pass
        {
            PackageRequirements
            {
                "com.unity.render-pipelines.high-definition": "[8.0,8.5]"
            }

            // The rest of the code for the Pass

        }
    }
}

其他资源

设置着色器以需要着色器模型或 GPU 功能
设置着色器的渲染队列