Version: 5.4
Providing vertex data to vertex programs
Стандартные шейдерные предпроцессорные макросы

Встроенные подключаемые файлы для шейдеров

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

CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG

Подключаемые файлы имеют расширение .cginc, ниже представлен список стандартных библиотек:

  • HLSLSupport.cginc - (подключается автоматически) Вспомогательные макросы и определения функций для кросплатформенной компиляции шейдеров.
  • UnityCG.cginc - часто используемые глобальные переменные и вспомогательные функции.
  • UnityCG.cginc - часто используемые глобальные переменные и вспомогательные функции.
  • AutoLight.cginc - функционал освещения и создания теней, например поверхностные шейдеры по умолчанию используют этот файл.
  • Lighting.cginc - модель освещения стандартного поверхностного шейдера; подключается автоматически при создании поверхностных шейдеров.
  • TerrainEngine.cginc - вспомогательные функции для работы с шейдерами Terrain & Vegetation.

Эти файлы можно найти в папке приложения Unity ({unity install path}/Data/CGIncludes/UnityCG.cginc в Windows, /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc в Mac), если вам захочется посмотреть, как реализован тот или иной функционал.

HLSLSupport.cginc

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

UnityShaderVariables.cginc

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

Структуры данных в UnityCG.cginc

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

Структуры данных в UnityCG.cginc

  • struct appdata_base: входные данные для вершинного шейдера, включающие положение вершины, ее нормаль и одну текстурную координату.
  • struct appdata_tan: входные данные для вершинного шейдера, включающие положение вершины, ее нормаль, касательную и одну текстурную координату.
  • struct appdata_full: входные данные для вершинного шейдера, включающие положение вершины, ее нормаль, касательную, цвет вершины и две текстурные координаты.
  • struct appdata_img: входные данные для вершинного шейдера, включающие положение вершины и одну текстурную координату.
Providing vertex data to vertex programs
Стандартные шейдерные предпроцессорные макросы