Version: 2019.3
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

This file is automatically included when compiling CGPROGRAM shaders (but not included for HLSLPROGRAM ones). It declares various preprocessor macros to aid in multi-platform shader development.

UnityShaderVariables.cginc

This file is automatically included when compiling CGPROGRAM shaders (but not included for HLSLPROGRAM ones). It declares various built-in global variables that are commonly used in shaders.

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

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

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

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