Некоторые директивы #pragma
принимают параметры, которые позволяют ориентироваться на определенные графические API и платформы. На этой странице содержится информация об использовании этих директив и список допустимых значений параметров.
Включение или исключение графических API
По умолчанию Unity компилирует все шейдерыпрограммы, работающие на графическом процессоре. Подробнее
См. в Словарь программы для каждого графического API в списке для текущей цели сборки . Иногда вам может понадобиться скомпилировать определенные шейдерные программы только для определенных графических API; например, если вы используете функции, которые поддерживаются не на всех платформах.
Чтобы скомпилировать шейдерную программу только для заданных API, используйте директиву #pragma only_renderers
. Вы можете передать несколько значений, разделенных пробелами.
В этом примере показано, как компилировать шейдеры только для Metal и Vulkan:
#pragma only_renderers metal vulkan
Чтобы исключить код шейдера из компиляции заданными компиляторами, используйте директиву #pragma exclude_renderers
. Вы можете передать несколько значений, разделенных пробелами.
В этом примере показано, как исключить шейдер из компиляции для Metal и Vulkan:
#pragma exclude_renderers metal vulkan
Создание вариантов шейдера для графических уровней для заданного графического API
Во встроенном конвейере рендеринга Unity автоматически создает варианты шейдераВерсия шейдерной программы, которую Unity генерирует в соответствии с определенной комбинацией ключевых слов шейдера и их статусом. Объект Shader может содержать несколько вариантов шейдера. Подробнее
См. в Словарь, соответствующие уровни графики при определенных условиях. При необходимости вы также можете заставить Unity генерировать эти варианты.
Для этого используйте директиву препроцессора #pragma hardware_tier_variants
и укажите графические API, для которых вы хотите создать варианты многоуровневых шейдеров.
Например, это указывает Unity компилировать варианты многоуровневых шейдеров для Metal:
#pragma hardware_tier_variants metal
Список допустимых значений параметров
Поддерживаемые значения:
Значение | Описание |
---|---|
d3d11 |
DirectX 11 уровня функций 10 и выше, DirectX 12 |
gles |
OpenGL ES 2.0, WebGLJavaScript API, который отображает 2D- и 3D-графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. Подробнее См. в Словарь 1.0 |
gles3 |
OpenGL ES 3.x, WebGL 2.0 |
ps4 |
PlayStation 4 |
xboxone |
Xbox One и GameCore, DirectX 11 и DirectX 12 |
metal |
iOSМобильная операционная система Apple. More info See in Словарь/Mac Metal |
glcore |
OpenGL 3.x, OpenGL 4.x |
vulkan |
Vulkan |
switch |
Nintendo Switch |
ps5 |
PlayStation 5 |