Блок PackageRequirements в ссылке ShaderLab
Для указания требований к пакету для SubShader или Пропуска используется блок PackageRequirements. ShaderLab поддерживает один блок PackageRequirements на SubShader или Пропуск, но каждый блок может указывать несколько требований к пакету.
Совместимость конвейера отображения
| Название особенности | Universal Render Pipeline (URP) | High Definition Render Pipeline (HDRP) | Изготовленный на заказ SRP | Built-in Render Pipeline |
|---|---|---|---|---|
| ShaderLab: блок PackageRequirements | Да | Да | Да | Да |
Синтаксис
Примечание: если вы предоставляете PackageRequirements блока, она должна стоять перед всеми другими заявлениями внутри SubShader или Пройти.
| Подпись | Функция |
|---|---|
PackageRequirements{ [requirement definition]} |
Определяет требования к пакету Pass или SubShader. |
Существует несколько способов объявления требований к пакету. Каждый из них обеспечивает различное поведение.
- “<имя пакета>”: Указывает, что SubShader или Pass работает с любой версией пакета.
- “<имя пакета>”: “<ограничения версии>”: Указывает, что SubShader или Pass работает только с подмножеством версий пакета.
- “<имя пакета>”: “unity=<ограничения версии>”: Указывает, что SubShader или Pass работает только с подмножеством версий Unity и требует пакета с указанным именем.
- “unity”:“<version restrictions>”: Указывает, что SubShader или Pass работает только с подмножеством версий Unity.
Синтаксис версий
В требованиях пакета ShaderLab версия использует формат major.minor или major.minor.patch. Если вы используете только major.minor, Unity использует 0 для patch. Версии пакета могут также включать приставку -preview или -preview.n, где -preview эквивалентна -preview.0. Версии предварительного просмотра следуют перед версиями, не являющимися предварительными, так что 1.2.3-preview.4 следует после 1.2.2, но перед 1.2.3.
Существует несколько способов указать диапазон версий. Каждый из них обеспечивает различное поведение. Это:
- <version>: Включает вводимую вами версию и все последующие версии. Например,
1.2.3включает все версии, начинающиеся с1.2.3; - [<version>]: Указывает точную версию. Например,
[1.2.3]включает только версию1.2.3; - [<version1>,<version2>]: Указывает диапазон между <version1> и <version2>. Использование квадратных скобок и круглых скобок приводит к включению или исключению версии соответственно. Открывающая скобка влияет на <version1>, а закрывающая скобка влияет на <version2>. Пример:
[1.2.3,2.3.4)включает все версии от 1.2.3 до 2.3.3.
Также можно указать наборы диапазонов версий для одного пакета. Чтобы создать набор диапазонов версий из отдельных диапазонов, используйте точку с запятой в качестве разделителя. Например, [2.0,3.4.5];[3.7];4.0 включает версии от 2.0.0 до 3.4.5, версию 3.7.0 и версию 4.0.0 и выше.
При установке версий для пакета следует учитывать следующие моменты.
- Версии, диапазоны версий и наборы диапазонов версий не могут содержать дополнительных символов.
- Диапазон версий не может быть пустым.
- Наборы диапазонов версий не могут иметь пересечений.
- Требования к пакетам чувствительны к пробелам.
Если синтаксис не соответствует вышеизложенному, то ограничение версии является недействительным. Дополнительные сведения см. в Настройка шейдера на требование пакета.