核心配置中可用的内建变量
顶点着色器
输出变量
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用途:全局工作组的总数。