Unity 6.3
0 онлайн 120 гостей 3 в системе
Вход
Материалы и шейдеры Шаг 376 из 442

Уменьшение вариаций шейдера

Вы можете предотвратить варианты шейдеров это называется стриптиз. Удаление ненужных вариантов может значительно сократить время сборки, размер файла, время загрузки шейдера и использование памяти при выполнении. В более крупных проектах или проектах со сложными шейдерами это очень важно.

Примечание: Сведения о ключевых словах шейдера в Shader Graph, см. Введение в ключевые слова в Shader Graph.

Важно: При сокращении числа вариантов шейдеров Unity может лишить ваш созданный проект необходимых вариантов шейдеров. Чтобы проверить, сколько вариантов шейдеров имеет ваш проект, включите строгое соответствие вариантов шейдеров, в противном случае Unity может заменить недостающие варианты шейдеров другими. Дополнительную информацию см. в Проверка количества вариантов шейдеров.

Ограничить или удалить варианты шейдеров по ключевым словам

Чтобы уменьшить количество компилируемых Unity вариантов шейдера, используйте Настройки сборки шейдера в окне настроек Графики.

Выполните следующие действия:

  1. В главном меню перейдите в Изменить > Project Настройки > Графика.
  2. В разделе Настройки сборки шейдера выберите кнопку Добавить (+).
  3. Добавьте набор ключевых слов, который требуется изменить.
  4. Используйте пробелы для разделения ключевых слов в наборе, например FOG_LINEAR FOG_EXP FOG_EXP2.
  5. Введите все ключевые слова в наборе, включая _, если он существует.

Для того, чтобы узнать, какие ключевые слова Unity использует в готовых шейдерах в Universal Render Pipeline, обратитесь к Варианты шейдера особенностей полосы.

Затем можно выполнить одно из следующих действий:

  • Чтобы ограничить количество вариантов шейдеров, установите Type Override на shader_feature или dynamic_branch. Более подробную информацию о выборе типа см. в Как Unity компилирует ветвящиеся шейдеры.
  • Чтобы исключить код шейдера для ключевых слов в компиляции, выберите раскрывающийся треугольник. Unity отображает флажок для каждого ключевого слова. Чтобы компилировать код шейдера для ключевого слова, установите флажок.

Выберите Применить, чтобы применить изменения. Чтобы удалить набор ключевых слов, выберите кнопку Удалить (-).

Чтобы настроить варианты шейдеров для различных платформ, используйте профиль сборки. Каждый созданный профиль сборки имеет свой собственный Настройки сборки шейдера раздел, который переопределяет параметры в окне настроек графики. Дополнительные сведения см. в разделе Настройка параметров с помощью профилей компиляции.

Уменьшение вариаций шейдера с помощью других настроек

Чтобы уменьшить или удалить варианты шейдеров, можно также выполнить следующие действия:

  • Удалить некоторые варианты шейдеров в разделе Удалить шейдеры.
  • Если вы используете Universal Render Pipeline (URP), обратитесь к Уменьшение вариантов шейдеров в URP.
  • Если вы используете High Definition Render Pipeline (HDRP), ознакомьтесь с Уменьшение вариантов шейдеров в HDRP.
  • Если вы используете Встроенную Render Pipeline, убедитесь, что ваши настройки Типа идентичны, если только вам не нужно, чтобы они были разными. Дополнительные сведения см. в Графические типы.

Уменьшение вариаций шейдера с помощью скриптов редактора

Для вариантов шейдеров, которые нельзя удалить другими способами, можно использовать следующий APIs в сценарии Редактора для выполнения удаления во время сборки:

Более подробную информацию по этому вопросу см. в Снятие скриптовых вариантов шейдера

Избегайте удаления вариантов шейдеров, используемых вашей сборкой

Если вы удаляете вариант шейдера, который нужен Материалу во время выполнения, Unity пытается выбрать аналогичный вариант шейдера, который доступен. Чтобы избежать этого, используйте следующие подходы:

  • Проверьте, какие варианты шейдеров у вас есть, чтобы помочь вам увидеть, какие варианты шейдеров и комбинации ключевых слов нужны Materials во время выполнения.
  • Добавить шейдеры в список Всегда включенные шейдеры в Настройки графики.
  • Если вы используете ключевое слово shader_feature, не используйте это ключевое слово для изменения того, какая ветвь кода выполняется во время выполнения.

Дополнительные ресурсы