Установка конвейера отображения и порядка отображения для шейдера
Чтобы установить конвейер рендеринга и порядок рендеринга для суб-шейдера или прохода шейдера, добавьте блок Tag.
Добавить метку
Добавить блок Tag к блоку SubShader или блоку Pass. Например:
Shader "TagsExample"
{
SubShader
{
// Add a subshader tag
Tags { "TagName" = "Value" }
Pass
{
// Add a pass tag
Tags { "TagName" = "Value" }
...
}
}
}
Более подробную информацию об именах и значениях тегов см. в тегах SubShader в ShaderLab ссылке и тегах Pass в ShaderLab ссылке. Не все блоки Tag совместимы с субшайдерами и проходами.
Вы также можете добавить свои собственные теги и прочитать их из скрипта C#.
Установка конвейера отображения
Чтобы сделать субшадер совместимым с Universal Render Pipeline (URP) или High Definition Render Pipeline (HDRP), добавьте тег RenderPipeline в блок SubShader:
- Для URP используйте
"RenderPipeline" = "UniversalPipeline" - Для HDRP используйте
"RenderPipeline" = "HDRenderPipeline"
Установить порядок отображения
Unity использует два тега для определения времени выполнения шейдера:
- Тег
LightMode: Задает, на какой стадии конвейера рендеринга проходит проход шейдера. Например, рисование непрозрачной геометрии или рисование эффектов после обработки. - Тег
Queue: устанавливает, к какой группе объектов принадлежит субшадер. Unity рисует каждую очередь рендеринга в определенном порядке.
Каждая стадия LightMode обычно отображает определенный диапазон Queue. Unity предупреждает вас, если вы используете тег Queue, который не отображается стадией LightMode.
Примечание: тег LightMode не связан с параметром Световой режим в окне Inspector компонента Light.
Установить тег LightMode
Добавьте тег LightMode в блок Pass. Например, чтобы выполнить шейдер во время прохождения прямого рендеринга в очереди Universal Render Pipeline (URP), которая рендерингует очередь Geometry, используйте тег Tags { "LightMode" = "UniversalForward" }.
Список значений LightMode см. в LightMode тег действительные значения и ShaderLab Pass тег в URP ссылка.
Чтобы включить или отключить проход шейдера по его тегу LightMode, используйте Material.SetShaderPassEnabled API.
Установить метку очереди
Добавьте тег Queue в блок SubShader. Используйте один из следующих подходов:
- Чтобы добавить субшейдер в очередь, используйте
"Queue" = "RenderQueueName". Например,"Queue" = "Transparent". - Чтобы добавить субшадер перед или после очереди, используйте
"Queue" = "RenderQueueName-Offset"или"Queue" = "RenderQueueName+Offset". Например,"Queue" = "Geometry+1".
Вместо имен можно также использовать значения очереди. Например, "Queue" = "3000" вместо "Queue" = "Transparent"или "Queue" = "2001" вместо "Queue" = "Geometry+1".
Вы также можете установить очередь в окне Inspector материала, используя свойство Render Queue, или в скрипте C#, используя свойство Material.renderQueue API.
Дополнительные сведения см. в Поведение очередей отображения и сортировки.
Проверка тегов
Для чтения тегов из скрипта C# используйте следующую команду:
- Для чтения тега subshader используйте
Material.GetTagAPI. - Для считывания пароля используйте
Shader.FindPassTagValueAPI. - Чтобы прочитать тег
Queue, используйтеShader.renderQueueAPI.