Unity 6.3
0 онлайн 54 гостей 3 в системе
Вход

Установка конвейера отображения и порядка отображения для шейдера

Чтобы установить конвейер рендеринга и порядок рендеринга для суб-шейдера или прохода шейдера, добавьте блок 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# используйте следующую команду:

Дополнительные ресурсы