GLSL常见语法快速了解
【注意】本文仅记录Vertex Shader和Fragmen Shader!
一 GLSL简介
GLSL语言(OpenGL Shading Language)是一种C风格的语言.
二、数据类型
2.1 基本数据类型有
基本类型 | 解释 |
---|---|
int | 整型 |
float、double | 浮点型 |
unit | 无符号整数 |
bool | bool类型,true/false |
2.2 矢量(Vectors)类型
(表中字母n 代表可以是 2, 3或 4)
类型 | 解释 |
---|---|
bvecn | 布尔型矢量 |
ivecn | 整型矢量 |
uvecn | 无符号整型矢量 |
vecn | float型矢量 |
dvecn | double型矢量 |
2.3 矩阵类型(Matrices)
(矩阵类型都是浮点型)
类型 | 解释 |
---|---|
matnxm | n列m行矩阵,如mat3x4 |
matn | n列n行矩阵,如mat3 |
2.4 Uniform
uniform,全局着色变量,必须被定义在全局范围内,可以是任何类型。
三、修饰符(Type Qualifier)
限定符,修改全局和局部定义变量的存储或行为。
- const(Constant qualifier):变量值在初始化后不可更改,类似Java中的final
- varying:片段着色器的输入或顶点着色器的输出。(GLSL 1.30 (OpenGL 3.0)废弃,GLSL 1.40及以上移除)
- attribute :顶点着色器中的输入限定符。(GLSL 1.30 (OpenGL 3.0)废弃,GLSL 1.40及以上移除)
四、内置变量(Built-in Variable)
不同着色阶段GLSL定义了不同的特殊变量,这些变量约定格式为“gl_”形式。
- gl_FragColor:片段着色器输出变量,要填入的颜色
- gl_Position:顶点着色输出变量,变换后顶点的位置
【参考】
- http://wiki.lwjgl.org/wiki/GLSL_Tutorial:_Syntax.html
- https://baike.baidu.com/item/GLSL/2881120
- https://riptutorial.com/glsl
- https://www.khronos.org/opengl/wiki/Category:OpenGL_Shading_Language
- https://www.khronos.org/opengl/wiki/Tutorial2:_VAOs,VBOs,Vertex_and_Fragment_Shaders(C/_SDL)