渲染管线各个环节之间依赖变量实现数据传递,类似于流水线作业:前一道工序的输出,就是后一道工序的输入。除了显式指定in或out属性的变量,渲染管线上各个着色器还有各自的内置变量,这些内置变量也同样具有in和out属性。
1 顶点着色器内置变量
属性 |
数据类型 |
变量名 |
说明 |
in |
int |
gl_VertexID |
当前顶点的索引序号 |
in |
int |
gl_InstanceID |
当前图元的实例数量 |
out |
vec4 |
gl_Position |
当前顶点的齐次坐标 |
out |
float |
gl_PointSize |
当前顶点栅格化时点的大小 |
out |
float |
gl_ClipDistance[] |
指定每个平面的裁剪距离 |
2 细分控制着色器内置变量
属性 |
数据类型 |
变量名 |
说明 |
in/out |
vec4 |
gl_Position |
当前顶点的齐次坐标 |
in/out |
float |
gl_PointSize |
当前顶点栅格化时点的大小 |
in/out |
float |
gl_ClipDistance[] |
指定每个平面的裁剪距离 |
in |
int |
gl_PatchVerticesIn |
当前面片的顶点数量 |
in |
int |
gl_PrimitiveID |
已处理图元数量 |
in |
int |
gl_InvocationID |
请求分配的面片顶点数量 |
patch out |
float |
gl_TessLevelOuter[4] |
设置面片外部细分层次 |
patch out |
float |
gl_TessLevelInner[2] |
设置面片内部细分层次 |
3 细分估值着色器内置变量
属性 |
数据类型 |
变量名 |
说明 |
in/out |
vec4 |
gl_Position |
当前顶点的齐次坐标 |
in/out |
float |
gl_PointSize |
当前顶点栅格化时点的大小 |
in/out |
floa t |
gl_ClipDistance[] |
指定每个平面的裁剪距离 |
in |
int |
gl_PatchVerticesIn |
当前面片的顶点数量 |
in |
int |
gl_PrimitiveID |
已处理图元数量 |
in |
vec3 |
gl_TessCoord |
3个分量代表3个顶点的权重 |
patch in |
float |
gl_TessLevelOuter[4] |
设置面片外部细分层次 |
patch in |
float |
gl_TessLevelInner[2] |
设置面片内部细分层次 |
4 几何着色器内置变量
属性 |
数据类型 |
变量名 |
说明 |
in/out |
vec4 |
gl_Position |
当前顶点的齐次坐标 |
in/out |
float |
gl_PointSize |
当前顶点栅格化时点的大小 |
in/out |
float |
gl_ClipDistance[] |
指定每个平面的裁剪距离 |
in |
int |
gl_PatchVerticesIn |
当前面片的顶点数量 |
in |
int |
gl_InvocationID |
请求分配的面片顶点数量 |
patch out |
float |
gl_TessLevelOuter[4] |
设置面片外部细分层次 |
patch out |
float |
gl_TessLevelInner[2] |
设置面片内部细分层次 |
out |
int |
gl_PrimitiveID |
图元标识符 |
out |
int |
gl_Layer |
设置面的层级 |
out |
int |
gl_ViewPortIndex |
绘制图元的视口索引 |
5 片元着色器内置变量
属性 |
数据类型 |
变量名 |
说明 |
in |
vec4 |
gl_FragCoore |
当前片元的窗口坐标 |
in |
bool |
gl_FrontFacing |
当前片元的前后面标志 |
in |
float |
gl_ClipDistance[] |
指定每个平面的裁剪距离 |
in |
vec2 |
gl_PointCoore |
当前片元在点图元中的位置 |
in |
int |
gl_PrimitiveID |
图元标识符 |
in |
int |
gl_SampleID |
当前处理的样本数量 |
in |
vec2 |
gl_SamplePosition |
在多样本缓冲中当前样本位置 |
in |
int |
gl_SampleMaskIn[] |
样本掩码 |
in |
int |
gl_Layer |
面的层级 |
in |
int |
gl_ViewPortIndex |
绘制图元的视口索引 |
out |
float |
gl_FragDepth |
设置面片外部细分层次 |
out |
int |
gl_SampleMask[] |
样本掩码 |
6 计算着色器内置变量
属性 |
数据类型 |
变量名 |
说明 |
in |
uvec3 |
gl_NumWorkGroups |
每个工作组全局工作项的总数 |
const |
uvec3 |
gl_WorkGroupSize |
局部工作组大小 |
in |
uvec3 |
gl_WorkGroupID |
当前调用所在的全局工作组三维索引 |
in |
uvec3 |
gl_GlobalInvotionID |
当前工作项的全局索引 |
in |
uvec3 |
gl_LocalInvotionID |
当前调用所在的全局工作组中局部工作组的索引 |
in |
uint |
gl_LocalInvotionIndex |
gl_LocalInvotionID的一维标识 |
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
评论(0)