Skip to content

概述

Shader(着色器)是运行在 GPU 上的小程序,用来决定:

  • 物体画在哪
  • 画成什么样
  • 每一个像素的颜色怎么计算

GLSL(OpenGL Shading Language)是为 GPU 设计的一门 类 C 语言,专门用来写 Shader。

基本语法

  1. 类型
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;
  1. 函数
glsl
float add(float x, float y) {
  return x + y;
}

void main() {
  
}
  1. 语句
glsl
int count = 3;
if (count > 5) {}
else {}

for (int i = 0; i < 10; i++) {}
  1. 向量
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);
  1. 内置
glsl
gl_Position  // 顶点坐标,四维向量vec4
gl_FragColor // 像素颜色,四维向量vec4,cesium中采用out_FragColor

fract()      // 取小数部分
clamp()      // 归一化到0 ~ 1
abs()        // 绝对值
/