Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

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

Этот раздел руководства содержит информацию об использовании HLSL для Unity. Общие сведения о написании HLSL см. в документации Microsoft по HLSL.

Примечание. Первоначально Unity использовала Cg. язык, отсюда и название некоторых ключевых слов Unity (CGPROGRAM) и расширения файлов (.cginc). Unity больше не использует Cg, но эти имена все еще используются.

Добавление кода HLSL в код ShaderLab

Вы помещаете код HLSL в блоки кода в ShaderLabязык Unity для определения структуры объектов Shader. Подробнее
См. в коде Словарь
. Обычно они выглядят так:

Pass { // ... the usual pass state setup ... HLSLPROGRAM // compilation directives for this snippet, e.g.: #pragma vertex vert #pragma fragment frag // the shader program itself ENDHLSL // ... the rest of pass ... }

Дополнительную информацию о блоках кода шейдера см. в разделе ShaderLab: добавление шейдерных программ.

Синтаксис HLSL

HLSL имеет два синтаксиса: устаревший синтаксис в стиле DirectX 9 и более современный синтаксис в стиле DirectX 10+. Разница в основном в том, как работают функции выборки текстур:

  • В устаревшем синтаксисе используются функции sampler2D, tex2D() и аналогичные функции. Этот синтаксис работает на всех платформах.
  • В синтаксисе DX10+ используются функции Texture2D, SamplerState и .Sample(). Некоторые формы этого синтаксиса не работают на платформах OpenGL, поскольку текстуры и сэмплеры не являются разными объектами в OpenGL.

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

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3