Unity contains several files that can be used by your shader programs to bring in predefined variables and helper functions. This is done by the standard #include
directive, e.g.:
CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG
Shader include files in Unity are with .cginc
extension, and the built-in ones are:
HLSLSupport.cginc
- (automatically included) Helper macros and definitions for cross-platform shader compilation.UnityShaderVariables.cginc
- (automatically included) Commonly used global variables.UnityCG.cginc
- commonly used helper functions.AutoLight.cginc
- lighting & shadowing functionality, e.g. surface shaders use this file internally.Lighting.cginc
- standard surface shader lighting models; automatically included when you’re writing surface shaders.TerrainEngine.cginc
- helper functions for Terrain & Vegetation shaders.These files are found inside Unity application ({unity install path}/Data/CGIncludes/UnityCG.cginc on Windows, /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc on Mac), if you want to take a look at what exactly is done in any of the helper code.
This file is automatically included when compiling shaders. It declares various preprocessor macros to aid in multi-platform shader development.
This file is automatically included when compiling shaders. It declares various built-in global variables that are commonly used in shaders.
This file is often included in Unity shaders. It declares many built-in helper functions and data structures.
appdata_base
: vertex shader input with position, normal, one texture coordinate.appdata_tan
: vertex shader input with position, normal, tangent, one texture coordinate.appdata_full
: vertex shader input with position, normal, tangent, vertex color and two texture coordinates.appdata_img
: vertex shader input with position and one texture coordinate.