Appearance
概述
Shader(着色器)是运行在 GPU 上的小程序,用来决定:
- 物体画在哪
- 画成什么样
- 每一个像素的颜色怎么计算
GLSL(OpenGL Shading Language)是为 GPU 设计的一门 类 C 语言,专门用来写 Shader。
基本语法
- 类型
glsl
// 类型
bool isOk = true;
int count = 10;
float number = 12.34;
// 运算
float a = 1.0;
float b = 2.0;
float c = a + b;
// 常量
const float pai = 3.1415926;- 函数
glsl
float add(float x, float y) {
return x + y;
}
void main() {
}- 语句
glsl
int count = 3;
if (count > 5) {}
else {}
for (int i = 0; i < 10; i++) {}- 向量
glsl
// vec2 二维向量,具备xy两个分量,分量是浮点数
vec2 pos1 = vec2(1.0, 2.0);
// vec3 三维向量,具备xyz三个分量,分量是浮点数
vec3 color1 = vec3(1.0, 0.0, 0.0);
// vec4 四维向量,具备xyzw四个分量,分量是浮点数
vec4 color2 = vec4(1.0, 0.0, 0.0, 1.0);
// 组合
vec3 pos2 = vec3(pos1, 3.0);- 内置
glsl
gl_Position // 顶点坐标,四维向量vec4
gl_FragColor // 像素颜色,四维向量vec4,cesium中采用out_FragColor
fract() // 取小数部分
clamp() // 归一化到0 ~ 1
abs() // 绝对值