Чтобы определить SubShader в ShaderLabязык Unity для определения структуры объектов Shader. Подробнее
Посмотрите в Словарь, вы используете SubShader
блок. На этой странице содержится информация об использовании блоков SubShader.
Для получения информации о том, как Shaderпрограмма работает на графическом процессоре. Подробнее
См. в Словарь работы объектов и отношения между объектами шейдеров, субшейдерами и проходами. , см. Введение в объекты шейдера.
Обзор
Объект Shader содержит один или несколько SubShader. Субшейдеры позволяют определять различные параметры графического процессора и шейдерные программы для различного оборудования, конвейеров рендеринга и параметров среды выполнения. Некоторые объекты Shader содержат только один SubShader; другие содержат несколько субшейдеров для поддержки различных конфигураций.
Совместимость конвейера рендеринга
Название функции | Встроенный конвейер рендеринга | Универсальный конвейер рендеринга (URP) | Конвейер рендеринга высокого разрешения (HDRP) | Пользовательская SRP |
---|---|---|---|---|
ShaderLab: SubShader block | Да | Да | Да | Да |
Использование блока SubShader
В ShaderLab вы определяете вложенный шейдер, помещая блок SubShader
внутрь блока Shader
.
Внутри блока SubShader
вы можете:
- Назначение LODМетод Level Of Detail (LOD) – это оптимизация, которая снижает количество треугольников, которые Unity должна отображать для GameObject, когда его расстояние от камеры увеличивается. Подробнее
Просмотреть в Словарь (уровень детализации) значение SubShader, используяLOD
блок. См. назначение значения уровня детализации вспомогательному шейдеру. - Назначьте вложенному шейдеру пары "ключ-значение" с помощью блока
Tags
. См. раздел ShaderLab: назначение тегов вспомогательному шейдеру. - Добавьте инструкции графического процессора или код шейдера в вспомогательный шейдер с помощью команд ShaderLab. См. раздел ShaderLab: использование команд.
- Определите один или несколько проходов с помощью блока
Pass
. См. раздел ShaderLab: определение прохода.
Подпись | Функции |
---|---|
SubShader { <optional: LOD> <optional: tags> <optional: commands> <One or more Pass definitions> }
|
Defines a SubShader.
Вы можете определить столько Pass, сколько хотите в SubShader. |
Примеры
В этом примере кода демонстрируется синтаксис для создания объекта Shader, содержащего один SubShader, который, в свою очередь, содержит один Pass.
Shader "Examples/SinglePass"
{
SubShader
{
Tags { "ExampleSubShaderTagKey" = "ExampleSubShaderTagValue" }
LOD 100
// ShaderLab commands that apply to the whole SubShader go here.
Pass
{
Name "ExamplePassName"
Tags { "ExamplePassTagKey" = "ExamplePassTagValue" }
// ShaderLab commands that apply to this Pass go here.
// HLSL code goes here.
}
}
}