To specify package requirements for a SubShader or a Pass, you use the PackageRequirements block. ShaderLabUnity’s language for defining the structure of Shader objects. More info
See in Glossary supports a single PackageRequirements block per SubShader or Pass, but each block can specify multiple package requirements.
| Feature name | Universal Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info See in Glossary (URP) |
High Definition Render Pipeline (HDRP) | Custom SRP | Built-in Render Pipeline |
|---|---|---|---|---|
| ShaderLab: PackageRequirements block | Yes | Yes | Yes | Yes |
Note: if you provide a PackageRequirements block, it must come before all other declarations inside the SubShader or Pass.
| Signature | Function |
|---|---|
PackageRequirements{ [requirement definition]} |
Defines the package requirements for the Pass or SubShader. |
There are multiple ways to declare package requirements. Each one provides a different behavior. They are:
In ShaderLab’s package requirements, a version uses the major.minor or major.minor.patch format. If you only use major.minor, Unity uses 0 for the patch. Package versions can also include a -preview or a -preview.n postfix where -preview is equivalent to -preview.0. Preview versions come before non-preview versions, so 1.2.3-preview.4 comes after 1.2.2 but before 1.2.3.
There are multiple ways to specify a version range. Each one provides a different behavior. They are:
1.2.3 includes all versions starting with 1.2.3;[1.2.3] only includes version 1.2.3;[1.2.3,2.3.4) includes all versions from 1.2.3 to 2.3.3.You can also specify sets of version ranges for a single package. To create a set of version ranges from individual ranges, use a semicolon as a separator. For example, [2.0,3.4.5];[3.7];4.0 includes versions from 2.0.0 to 3.4.5, version 3.7.0, and version 4.0.0 and above.
When you set the versions for a package, be aware of the following:
If the syntax does not adhere to the above, the version restriction is invalid. For more information on what happens with invalid package requirements, see Error checking.