Version: 6000.3
语言: 中文
将着色器设置为需要着色器模型或 GPU 功能
设置着色器的渲染队列

将着色器设置为需要包

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

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

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

注意:PackageRequirements块必须位于 SubShader 或 Pass 内的所有其他声明之前。

以下代码示例演示如何在 SubShader 和 Pass 中指定包要求。SubShader 为名为“com.my.package”的包声明单个包要求,并适用于从 2.2.0 开始的任何版本的该包。子着色器有两个通道:

  • 第一张通行证需要:

  • 通用渲染管线包,版本介于 10.2.1 和 11.0 之间。

  • 正文网格Unity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
    请参阅术语表
    3.2 或更高版本的 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 功能
设置着色器的渲染队列