Включить динамическое ветвление в шейдерах в URP
Чтобы уменьшить количество вариантов шейдера в Universal Render Pipeline (URP), включите Unity, используя динамическое ветвление в шейдерах вместо ключевых слов и вариантов шейдера.
Дополнительные сведения о ключевых словах см. в Изменение работы шейдеров с помощью ключевых слов
Примечание: Если вы нацелены на более старое мобильное устройство, динамическое ветвление может вызвать проблемы с производительностью. Проверьте на вашем конечном устройстве.
Выполните следующие действия:
- В главном меню перейдите в Изменить > Project Настройки.
- Выберите вкладку Графика.
- В разделе Настройки сборки шейдера выберите кнопку Добавить (+).
- Введите набор ключевых слов, включая один подчеркивающий знак (
_) или несколько подчеркивающих знаков (__), если они являются частью набора. Например,_ FOG_LINEAR FOG_EXP FOG_EXP2. - Установить Тип Переопределить на dynamic_branch.
- Выберите Применить. Unity перекомпилирует шейдеры.
Совместимые наборы ключевых слов в предварительно встроенных шейдерах
Если вы используете предустановленные шейдеры в URP, вы можете включить динамическое ветвление только для наборов ключевых слов в следующей таблице.
| Набор ключевых слов | Динамическое ветвление функции включено для |
|---|---|
_ FOG_LINEAR FOG_EXP FOG_EXP2 |
Туман |
_REFLECTION_PROBE_BLENDING |
Для получения дополнительной информации о зондах отражения см. Зонды отражения в URP. |
_REFLECTION_PROBE_BOX_PROJECTION |
Проекция коробки зонда отражения. Дополнительные сведения о проекции коробки см. в Устранение неисправностей отражения. |
Другие наборы ключевых слов в предустановленных шейдерах не совместимы с динамическим ветвлением.
Проверка совместимости пользовательских шейдеров
Чтобы включить динамическое ветвление для ключевого слова, набранного в пользовательский шейдер, использование HLSL if для веток, а не директивы препроцессора, такие как #if.