Вы можете запретить варианты шейдераверсию шейдерной программы, которая Unity генерирует в соответствии с определенной комбинацией ключевых слов шейдера и их статусом. Объект Shader может содержать несколько вариантов шейдера. Подробнее
См. в Словарь в процессе компиляции. Это называется зачисткой. Удаление ненужных вариантов может значительно сократить время сборки, размер файла, шейдерпрограмму, работающую на графическом процессоре. Подробнее
См. в Словарь время загрузки и использование памяти во время выполнения. В больших проектах или проектах со сложными шейдерами это очень важное соображение.
Ограничение вариантов шейдера при объявлении ключевых слов шейдера
Способ объявления ключевых слов шейдера может ограничить количество создаваемых ими вариантов:
- По возможности используйте
shader_feature
вместоmulti_compile
. - Убедитесь, что вы не определяете неиспользуемые ключевые слова с помощью
multi_compile
. - Укажите, когда ключевые слова шейдера влияют только на данный этап шейдера.
Информацию о том, как сделать это в написанных вручную шейдерах, см. в разделе Объявление и использование ключевых слов шейдера в HLSL. Для получения информации о том, как сделать это в Shader Graph, см. Shader Graph. : Доска.
Отключение вариантов шейдеров в пользовательском интерфейсе редактора
В редакторе Unity есть несколько мест. UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словарь, где можно настроить удаление шейдеров:
- В окне настроек графики настройте параметры в разделе Отсечение шейдеров:
- Убедитесь, что в параметре Всегда включать шейдеры нет ненужных шейдеров.
- Удалите варианты, связанные с созданием экземпляров графического процессора, картой освещения и туманом.
- Во встроенном конвейере рендеринга, если не важно, что ваши настройки уровня отличаются, убедитесь, что они идентичны друг другу. Дополнительную информацию см. в разделе Уровни графики.
- В универсальном конвейере рендеринга (URP) отключите неиспользуемые функции в объекте URP. Дополнительные сведения см. в разделе Шейдер.Stripping.
Удаление вариантов шейдера с помощью сценариев редактора
Для вариантов шейдеров, которые нельзя удалить другими способами, можно использовать следующие API в сценарии редактора для выполнения удаления во время сборки:
- IPreprocessShaders.OnProcessShader: получение обратного вызова до того, как Unity скомпилирует графический шейдер. Передать в сборку.
- IPreprocessComputeShaders.OnProcessComputeShader: получение обратного вызова до того, как Unity скомпилирует вычислительный шейдер в сборку.
Дополнительную информацию по этому вопросу см. в записи блога Unity Удаление вариантов скриптовых шейдеров