Языки
При написании шейдеровпрограммы, работающей на графическом процессоре. Подробнее
См. Словарь для Unity, вы используете следующие языки:
- Язык программирования под названием HLSL. Используйте это для написания самих шейдерных программ. Дополнительные сведения о HLSL см. в разделе HLSL в Unity.
- Специфический язык Unity под названием ShaderLab. Используйте его, чтобы определить объект шейдера, который действует как контейнер для ваших шейдерных программ. Дополнительные сведения о ShaderLab см. в разделе ShaderLabязык Unity для определения структуры объектов Shader. Подробнее
См. в Словарь.
Вам не нужно использовать разные языки для разных платформ; Unity компилирует ваш код HLSL и ShaderLab на разные языки для разных графических API. Дополнительные сведения см. в разделе компиляция шейдеров.
Примечание. Вы также можете напрямую писать свои шейдерные программы на GLSL и Metal, если хотите. Это не рекомендуется и не требуется как часть обычного рабочего процесса. Дополнительные сведения об использовании GLSL см. в разделе GLSL в Unity.
Различные способы написания шейдеров
Существуют разные способы написания шейдеров:
- Самый распространенный способ — написать вершинные и фрагментные шейдеры на HLSL. Дополнительную информацию см. в разделе Написание вершинных и фрагментных шейдеров.
- Во встроенном конвейере рендеринга вы также можете создавать поверхностные шейдеры. Это упрощенный способ написания шейдеров, взаимодействующих с освещением. Дополнительную информацию см. в разделе Шейдеры поверхностиУпрощенный способ написания шейдеров для Встроенный конвейер рендеринга. Подробнее
См. в Словарь. - Из соображений обратной совместимости Unity также поддерживает команды ShaderLab с фиксированным стилем функций. Они позволяют писать шейдеры в ShaderLab без использования HLSL. Это больше не рекомендуется, но описано на странице устаревшие функции ShaderLab.
Написание шейдеров для различных графических API
В некоторых случаях код шейдера необходимо писать по-разному в зависимости от целевого графического API. Информацию об этом см. в разделе Написание шейдеров для различных графических API.