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

Введение в написание шейдеров в коде

Как вы пишете пользовательские шейдеры в Unity зависит от используемого конвейера рендеринга:

  • Для руководства и примеров для Universal Render Pipeline (URP), см. URP: Запись пользовательских шейдеров.
  • Для руководства и примеров для Built-in Render Pipeline, см. Примеры шейдеров для Built-in Render Pipeline.
  • Не рекомендуется писать собственные программы для HDRP, из-за сложности кода. Вместо этого используйте Shader Graph для создания объектов Shader без написания кода.
  • Пример простого вершинного и фрагментного шейдера для пользовательского Scriptable Render Pipeline см. в Создание простого цикла рендеринга в пользовательском конвейере рендеринга.

Языки

При написании шейдеров для Unity используются следующие языки:

  • Язык программирования под названием HLSL. Используйте его для написания самих программ для шейдеров. Для более подробной информации о HLSL, см. HLSL в Unity.
  • Специфический язык Unity, называемый ShaderLab. Используйте его для определения Объект шейдера, который выступает в качестве контейнера для ваших шейдерных программ. Дополнительную информацию о ShaderLab см. ShaderLab.

Вам не нужно использовать разные языки для разных платформ; Unity компилирует ваш HLSL и ShaderLab код на разные языки для разных графиков APIs. Для более подробной информации см. Компиляция шейдеров.

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

ShaderLab

ShaderLab является декларативным языком, который используется в исходных файлах шейдера. Он использует синтаксис вложенных скобок для описания объекта шейдера.

Есть много вещей, которые вы можете определить в ShaderLab, но наиболее распространенными являются:

Во Встроенном Render Pipeline, вы также можете писать поверхностные шейдеры. Они являются упрощенным способом написания шейдеров, которые взаимодействуют с освещением. Для более подробной информации, см. поверхностные шейдеры.

Запись шейдеров для различных графиков APIs

В некоторых случаях вам придется писать код шейдера по-разному в зависимости от графики API, на которую вы нацелены. Информацию об этом см. в Писание шейдеров для разных графиков APIs.