Glsl语言基础
在C语言基础上独立出来的高级图形处理语言,基本语法内容与C语言相同.
一 基本数据类型
其中有22个基本类型,大多数都和C语言相同但也定义了特有的类型
void – 用于没有返回值的函数
bool – 条件类型,其值可以是真或假
int – 有符号的整数
float – 浮点数
vec2 – 2 个浮点数组成的向量
vec3 – 3 个浮点数组成的向量
vec4 – 4 个浮点数组成的向量
bvec2 – 2个布尔类型数组成的向量
bvec3 – 3个布尔类型数组成的向量
bvec4 – 4个布尔类型数组成的向量
ivec2 – 2个整数组成的向量
ivec3 – 3 个整数组成的向量
ivec4 – 4 个整数组成的向量
mat2 – 浮点数的2x2矩阵
mat3 – 浮点数的3x3矩阵
mat4 – 浮点数的4x4矩阵
sampler1D – 用来存取一维纹理的采样器
sampler2D – 用来存取二维纹理的采样器
sampler3D – 用来存取三维纹理的采样器
samplerCube – 用来存取立方映射纹理的采样器
sampler1Dshadow – 用来存取一维深度纹理的采样器
sampler2Dshadow – 用來存取二维深度纹理的采样器
GLSL语言不支持双精度浮点型、字节类型、短整型、长整型。并且没有联合体、枚举类型、无符号整型以及位运算等特性。
二 内建变量
内建变量根据传递的方向分为两类:输入与输出
1.输入变量 —>负责将渲染管线中固定功能部分产生的信息传递进着色器
gl_Position
gl_PointSize
gl_FragCoord
gl_FrontFacing
2.输入变量 —>将着色器产生的信息传递给渲染管线中固定功能部分
gl_FragColor
gl_FragData
三 限定符
限定符 | 说明 |
---|---|
attribute | 一般用于每个顶点各不相同的量,如顶点位置、颜色等 |
uniform | 一般用于对同一组顶点组成的单个3D物体中所有顶点都相同的量,如当前的光源位置 |
varying | 一般用于顶点着色器传递给片元着色器的量 |
const | 用于声明常量 |