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

Основы объекта шейдера

В Unity при работе с шейдерами, которые являются частью графический конвейер, вы обычно работаете с экземплярами Shader класс. Экземпляр Shader класс называется Объект шейдера.

Объект Shader является специфическим для Unity способом работы с программами-шайдерами; это оболочка для программ-шайдеров и другой информации. Он позволяет определить несколько программ-шайдеров в одном файле и сообщить Unity, как ими пользоваться.

Совместимость конвейера отображения

Название особенности Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Изготовленный на заказ SRP Built-in Render Pipeline
Объекты шейдера Да Да Да Да

Объект шейдера

Объект Shader содержит шейдерные программы, инструкции по изменению настроек GPU (в совокупности называемых состоянием рендеринга) и сведения, объясняющие Unity, как их использовать.

Вы используете объекты Shader с материалами для определения внешнего вида вашей сцены.

Ассеты

Объекты Shader можно создавать двумя способами. Каждый из них имеет свой тип ассета:

  • Вы можете написать код для создания шейдера, который является текстовым файлом с расширением .shader.
  • Вы можете использовать Shader Graph для создания ассета Shader Graph.

Независимо от того, каким образом вы создаете свой Shader-объект, Unity представляет результаты таким же образом внутри.

Внутри объекта Shader

Объект Shader имеет вложенную структуру. Он организует информацию в структуры, называемые SubShaders и Проходит. Он организует программы Shader в варианты Shader.

Объект шейдера

Объект Shader содержит:

  • Информация о себе, например, название
  • Необязательный резервный объект Shader, который Unity использует, если он не может использовать этот
  • Один или несколько SubShaders

Вы также можете определить дополнительную информацию, такую как общий код шейдера или использование пользовательский редактор. Информацию об определении объекта Shader см. в ShaderLab: определение объекта Shader.

SubShaders

SubShaders позволяет разделить объект Shader на части, совместимые с различным оборудованием, конвейерами рендеринга и настройками времени выполнения.

SubShader содержит:

  • Информация о том, с каким оборудованием, конвейерами отображения и параметрами времени выполнения совместим этот SubShader
  • метки SubShader, которые представляют собой пары ключ-значение, предоставляющие информацию о SubShader
  • Один или несколько пропусков

Вы также можете задать дополнительные сведения — например, состояние рендеринга, общее для всех проходов. О том, что ещё можно задать в SubShader, см. ShaderLab: определение SubShader.

Пассажи

Пропуск содержит:

  • метки Pass, представляющие собой пары ключ-значение, которые предоставляют информацию о Pass;
  • Инструкции по обновлению состояния рендеринга перед запуском его шейдерных программ
  • Программы шейдеров, организованные в один или несколько вариантов шейдеров

Вы также можете определить дополнительную информацию, такую как имя. Информацию обо всем, что вы можете определить в Пропуске, см. ShaderLab: определение Пропуска.

Варианты шейдеров

Программы шейдеров, содержащиеся в Пассе, организованы в варианты шейдеров. Варианты шейдеров имеют общий код, но различную функциональность при включении или отключении данного ключевого слова.

Количество вариантов шейдера в Пропуске зависит от количества ключевых слов, определенных в коде шейдера, и целевой платформы. Каждый Пропуск содержит по крайней мере один вариант.

Более подробную информацию см. Варианты шейдеров.