Определить Pass в ShaderLabязыке Unity для определения структуры объектов Shader. Подробнее
См. в Словарь, используйте Передать
блок. Эта страница содержит информацию об использовании блоков Pass
. Для получения информации о том, как Shaderпрограмма работает на GPU. Подробнее
См. в Словарь работы объектов и отношения между объектами шейдеров, субшейдерами и проходами. , см. основные сведения об объекте шейдера.
Обзор
Проход — это фундаментальный элемент объекта Shader. Он содержит инструкции по настройке состояния графического процессора и шейдерных программ, которые выполняются на графическом процессоре.
Объекты простых шейдеров могут содержать только один проход, но более сложные шейдеры могут содержать несколько проходов. Вы можете использовать отдельные проходы для определения частей вашего объекта Shader, которые работают по-разному; например, части, требующие изменения состояния рендеринга, другие программы шейдеров или другой тег LightMode
Pass.
Примечание. В конвейерах рендеринга, основанных на Scriptable Render Pipeline, вы можете использовать RenderStateBlock для изменения состояния рендеринга на графическом процессоре, не требуя отдельного прохода.
Совместимость конвейера рендеринга
Название функции | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательская SRP |
---|---|---|---|---|
ShaderLab: Pass block | Да | Да | Да | Да |
Использование блока Pass
Чтобы определить обычный проход в ShaderLab, вы помещаете блок Pass
внутрь блока SubShader
.
В блоке Pass
вы можете:
- Назначьте пропуску имя с помощью блока имени. См. раздел ShaderLab: присвоение имени пропуску.
- Назначьте проходу пары "ключ-значение" с помощью блока "Теги". См. раздел ShaderLab: назначение тегов пропуску.
- Выполнение операций с помощью команд ShaderLab. См. раздел ShaderLab: использование команд.
- Добавьте код шейдера в проход, используя блок кода шейдера. См. раздел ShaderLab: блоки кода шейдера.
Вы также можете определить два специальных типа Pass, используя команды UsePass
или GrabPass
. Для получения информации об этих командах см. команды ShaderLab: UsePass или команды ShaderLab: GrabPass.
Подпись | Функции |
---|---|
Pass { <optional: name> <optional: tags> <optional: commands> <optional: shader code> }
|
Defines a Pass. |
Примеры
В этом примере кода демонстрируется синтаксис для создания объекта Shader, содержащего один SubShader, который, в свою очередь, содержит один Pass.
Shader "Examples/SinglePass"
{
SubShader
{
Pass
{
Name "ExamplePassName"
Tags { "ExampleTagKey" = "ExampleTagValue" }
// ShaderLab commands go here.
// HLSL code goes here.
}
}
}