核心配置中可用的内建变量
顶点着色器
输出变量
gl_Position
类型:
vec4
用途:定义顶点的裁剪空间位置。 必须由顶点着色器写入。
gl_PointSize
类型:
float
用途:定义点精灵(Point Sprite)的大小。可选写入。
gl_ClipDistance[]
类型:
float[]
用途:定义用户自定义的裁剪距离,用于裁剪平面(Clip Plane)。可选写入。
输入变量
gl_VertexID
类型:
int
用途:当前顶点的索引(从 0 开始)。
gl_InstanceID
类型:
int
用途:当前实例的索引(用于实例化渲染)。
gl_DrawID
要求 OpenGL 4.6+
类型:
int
用途:当前绘制调用的索引(用于多绘制间接命令)。
gl_BaseVertex
要求 OpenGL 4.6+
类型:
int
用途:当前绘制调用的基顶点索引(用于索引绘制)。
gl_BaseInstance
要求 OpenGL 4.6+
类型:
int
用途:当前绘制调用的基实例索引(用于实例化渲染)。
片段着色器
输入变量
gl_FragCoord
类型:
vec4
用途:当前片段在窗口空间中的坐标(
(x, y, z, 1/w)
)。
gl_FrontFacing
类型:
bool
用途:指示当前片段是否属于正面图元。
gl_PointCoord
类型:
vec2
用途:当前片段在点精灵中的纹理坐标(范围为
)。
gl_ClipDistance[]
类型:
float[]
用途:从顶点着色器传递的裁剪距离。
gl_PrimitiveID
类型:
int
用途:当前图元的索引(用于几何着色器或细分着色器)。
gl_Layer
要求 OpenGL 4.1+
类型:
int
用途:当前片段所属的图层(用于分层渲染)。
gl_ViewportIndex
要求 OpenGL 4.1+
类型:
int
用途:当前片段所属的视口索引(用于多视口渲染)。
输出变量
gl_FragDepth
类型:
float
用途:自定义片段的深度值。可选写入,默认值为
gl_FragCoord.z
。
几何着色器
gl_PrimitiveIDIn
类型:
int
用途:输入图元的索引。
gl_Layer
类型:
int
用途:输出图元所属的图层(用于分层渲染)。
gl_ViewportIndex
类型:
int
用途:输出图元所属的视口索引(用于多视口渲染)。
计算着色器
gl_GlobalInvocationID
类型:
uvec3
用途:当前工作项的全局调用 ID。
gl_LocalInvocationID
类型:
uvec3
用途:当前工作项在本地工作组内的 ID。
gl_WorkGroupID
类型:
uvec3
用途:当前工作组的 ID。
gl_NumWorkGroups
类型:
uvec3
用途:全局工作组的总数。