Skip to content

GLSL 常用函数分类手册

以下是 GLSL 中常用函数的分类整理,适用于 GLSL ES 3.0+(OpenGL ES 3.0/WebGL 2 及以上版本)。按功能分为 7 大类:


1. 数学计算函数

函数参数类型说明示例
abs(x)所有标量/向量绝对值abs(-2.5) = 2.5
sign(x)所有标量/向量符号(-1, 0, 1)sign(-3.0) = -1.0
floor(x)所有标量/向量向下取整floor(2.7) = 2.0
ceil(x)所有标量/向量向上取整ceil(2.1) = 3.0
round(x)所有标量/向量四舍五入round(2.4) = 2.0
fract(x)所有标量/向量小数部分fract(2.7) = 0.7
mod(x, y)所有标量/向量取模运算mod(5.0, 3.0) = 2.0
min(x, y)所有标量/向量最小值min(2.0, 5.0) = 2.0
max(x, y)所有标量/向量最大值max(2.0, 5.0) = 5.0
clamp(x, min, max)所有标量/向量限制在 [min, max] 区间clamp(10.0, 0.0, 1.0) = 1.0
mix(x, y, a)所有标量/向量线性插值:x*(1-a) + y*amix(0.0, 10.0, 0.5) = 5.0
step(edge, x)所有标量/向量阶跃函数:x >= edge ? 1.0 : 0.0step(0.5, 0.7) = 1.0
smoothstep(e0,e1,x)所有标量/向量平滑过渡:x 在 [e0, e1] 间插值smoothstep(0.0,1.0,0.5)=0.5

2. 三角函数

函数参数类型说明注意
sin(x)弧度正弦输入为弧度(非角度)
cos(x)弧度余弦同上
tan(x)弧度正切同上
asin(x)[-1,1]反正弦(返回弧度)返回值范围 [-π/2, π/2]
acos(x)[-1,1]反余弦(返回弧度)返回值范围 [0, π]
atan(y, x)标量反正切(返回弧度)正确处理所有象限
radians(x)角度角度 → 弧度radians(180.0) = π
degrees(x)弧度弧度 → 角度degrees(π) = 180.0

3. 指数与对数函数

函数参数类型说明
pow(x, y)标量/向量幂运算 x^y
exp(x)标量/向量自然指数 e^x
exp2(x)标量/向量2^x
log(x)标量/向量 (x>0)自然对数 ln(x)
log2(x)标量/向量 (x>0)以 2 为底的对数
sqrt(x)标量/向量 (x≥0)平方根
inversesqrt(x)标量/向量 (x>0)平方根倒数(高效)

4. 几何函数

函数参数类型说明
length(v)向量向量长度 |v|
distance(a, b)向量两点距离 |a-b|
dot(a, b)同维度向量点积 a·b
cross(a, b)vec3叉积(仅 3D 向量)
normalize(v)向量单位化向量 v / |v|
faceforward(n, i, n_ref)向量确保法线朝向观察者
reflect(i, n)向量反射向量:i - 2·dot(n,i)·n
refract(i, n, eta)向量 + 标量折射向量(eta=折射率比)

5. 向量操作函数

函数参数类型说明
any(v)bvec任意分量为 true 则返回 true
all(v)bvec所有分量为 true 则返回 true
not(v)bvec分量逻辑非
lessThan(a, b)数值向量逐分量 < 比较,返回 bvec
greaterThan(a, b)数值向量逐分量 > 比较
equal(a, b)任意向量逐分量 == 比较
vec4(v, a)vec3 + 标量扩展向量(如 vec3vec4

6. 纹理采样函数

函数说明
texture(sampler, uv)基础 2D 纹理采样
texture(sampler, uv, bias)带 LOD 偏置的采样(片段着色器)
textureLod(sampler, uv, lod)指定 LOD 级别采样(顶点着色器可用)
textureProj(sampler, projCoord)投影纹理采样(自动除 projCoord.w
textureOffset(sampler, uv, offset)带整数偏移的采样(如 offset=ivec2(1,0)
texelFetch(sampler, coord, lod)直接通过整数坐标获取纹素(不滤波)

采样器类型sampler2D, samplerCube, sampler2DArray 等。


7. 特殊函数

函数说明
dFdx(p) / dFdy(p)求屏幕空间偏导数(片段着色器专用,用于计算梯度)
noise(x)已废弃 旧版 GLSL 的噪声函数(现代 GPU 通常用自定义算法替代)

使用说明

  1. 向量化操作:所有函数均支持标量和向量参数(如 sin(vec2) 返回 vec2)。
  2. 精度限定符:实际使用时需结合精度(highp, mediump, lowp)。
  3. 纹理采样:WebGL 1 需用 texture2D,WebGL 2+ 统一为 texture

此手册覆盖 90% 常用场景,完整函数列表参考 GLSL ES 3.0 规范