Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Использование ключевых слов шейдера со скриптами C#

Во время выполнения вы можете включить или отключить шейдерПрограмму, работающую на графическом процессоре. Подробнее
Смотреть в Словарь
ключевых слов. Когда вы включаете или отключаете ключевое слово шейдера, Unity использует соответствующий вариант шейдера для рендерингапроцесса вывода графики на экран (или к текстуре рендера). По умолчанию основная камера в Unity отображает изображение на экране. Подробнее
См. в Словарь
.

Изменение вариантов шейдера во время выполнения может повлиять на производительность. Если изменение ключевых слов требует использования варианта в первый раз, это может привести к задержкам, пока графический драйвер подготавливает шейдерную программу. Это может быть особой проблемой для больших или сложных шейдеров или если глобальное изменение состояния ключевого слова затрагивает несколько шейдеров. Чтобы избежать этого, убедитесь, что вы учитываете варианты ключевых слов в своей стратегии загрузки и предварительного прогрева шейдера. Дополнительные сведения см. в разделе Загрузка шейдера.

Локальные и глобальные ключевые слова шейдера

В Unity есть ключевые слова локального шейдера и ключевые слова глобального шейдера:

  • Ключевые слова локального шейдера влияют на отдельный шейдер или вычислительный шейдер.
  • Глобальные ключевые слова шейдера влияют на несколько шейдеров и вычислительных шейдеров одновременно.

Вы устанавливаете область действия ключевого слова шейдера при его объявлении. Дополнительные сведения см. в разделе Ключевые слова шейдера: глобальная и локальная область действия.

Включение, отключение и проверка состояния ключевых слов глобального шейдера

Чтобы включить или отключить глобальное ключевое слово шейдера, используйте Shader.EnableKeyword или Shader.DisableKeyword.

Чтобы включить или отключить глобальное ключевое слово с помощью командного буфера, используйте CommandBuffer.EnableKeyword или CommandBuffer.DisableKeyword.

Чтобы проверить состояние, используйте [Shader.IsKeywordEnabled].

Включение, отключение и проверка состояния ключевых слов локального шейдера

Чтобы включить или отключить ключевое слово локального шейдера для графического шейдера, используйте Material.EnableKeyword или Material.DisableKeyword. Чтобы проверить состояние, используйте Material.IsKeywordEnabled.

Чтобы включить или отключить ключевое слово локального шейдера для вычислительного шейдера, используйте ComputeShader.EnableKeyword или ComputeShader.DisableKeyword. Чтобы проверить состояние, используйте [ComputeShader.IsKeywordEnabled].

Управление наборами ключевых слов во время выполнения

При создании шейдера вы объявляете ключевые слова наборами. Набор содержит взаимоисключающие ключевые слова.

Во время выполнения Unity не имеет представления об этих наборах. Он позволяет независимо включать или отключать любое ключевое слово, а включение или отключение ключевого слова не влияет на состояние любого другого ключевого слова. Это означает, что можно включить несколько ключевых слов из одного набора или отключить все ключевые слова в наборе.

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

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3