Unity содержит несколько файлов, которые могут использоваться вашими шейдерными программами для добавления предопределенных переменных и вспомогательных функций. Это делается стандартной директивой #include
, например:
CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG
Включаемые файлы шейдеров в Unity имеют расширение .cginc
, а встроенные файлы:
-
HLSLSupport.cginc
— (автоматически включается) Вспомогательные макросы и определения для кроссплатформенного шейдераПрограмма, работающая на графическом процессоре. Подробнее
См. в сборнике Словарь. -
UnityShaderVariables.cginc
— (автоматически включается) часто используемые глобальные переменные. -
UnityCG.cginc
— часто используемые вспомогательные функции. -
AutoLight.cginc
— функции освещения и затенения, например. поверхностные шейдерыУпрощенный способ написания шейдеров для встроенного конвейера рендеринга . Подробнее
См. в Словарь используйте этот файл для внутреннего использования. -
Lighting.cginc
— стандартные поверхностные шейдеры модели освещения; автоматически включается при написании поверхностных шейдеров. -
TerrainEngine.cginc
– вспомогательные функции для Terrainландшафта в вашей сцене. Игровой объект Terrain добавляет в вашу сцену большую плоскую плоскость, и вы можете использовать окно Terrain Inspector для создания подробного ландшафта. Подробнее
См. в Словаре и шейдерах растительности.
Эти файлы находятся внутри приложения Unity ({путь установки Unity}/Data/CGIncludes/UnityCG.cginc в Windows, /Applications/Unity/Unity.app/Contents/CGIncludes/ UnityCG.cginc на Mac), если вы хотите посмотреть, что именно делается во вспомогательном коде.
HLSLSupport.cginc
Этот файл автоматически включается при компиляции шейдеров CGPROGRAM (но не включается в шейдеры HLSLPROGRAM). Он объявляет различные макросы препроцессора, чтобы помочь в разработке мультиплатформенных шейдеров.
UnityShaderVariables.cginc
Этот файл автоматически включается при компиляции шейдеров CGPROGRAM (но не включается в шейдеры HLSLPROGRAM). Он объявляет различные встроенные глобальные переменные, которые обычно используются в шейдерах.
UnityCG.cginc
Этот файл часто включается в объекты Shader. Он объявляет множество встроенных вспомогательных функций и структур данных.
Структуры данных в UnityCG.cginc
- struct
appdata_base
: вершинный шейдерпрограмма, которая выполняется в каждой вершине 3D-модели во время рендеринга модели. Подробнее
См. в Словарь ввод с позицией, нормалью, одной координатой текстуры. - struct
appdata_tan
: ввод вершинного шейдера с позицией, нормалью, касательной, одной координатой текстуры. - struct
appdata_full
: ввод вершинного шейдера с позицией, нормалью, касательной, цветом вершины и двумя координатами текстуры. - struct
appdata_img
: ввод вершинного шейдера с позицией и одной координатой текстуры.