GLSL的内置变量

举报
天元浪子 发表于 2021/11/25 15:58:05 2021/11/25
【摘要】 渲染管线各个环节之间依赖变量实现数据传递,类似于流水线作业:前一道工序的输出,就是后一道工序的输入。除了显式指定in或out属性的变量,渲染管线上各个着色器还有各自的内置变量,这些内置变量也同样具有in和out属性。

渲染管线各个环节之间依赖变量实现数据传递,类似于流水线作业:前一道工序的输出,就是后一道工序的输入。除了显式指定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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。