以下是GLSL常用函数的分类整理表格:

函数类别函数名功能描述示例/备注
数学运算sin(x)/cos(x)/tan(x)三角函数(参数为弧度)sin(radians(30.0)) 计算30度角的正弦值
pow(x,y)计算x的y次幂pow(2.0,3.0)=8.0
sqrt(x)/inversesqrt(x)平方根 / 平方根倒数sqrt(4.0)=2.0inversesqrt(4.0)=0.5
exp(x)/log(x)以e为底的指数函数 / 自然对数exp(1.0)=e≈2.718log(e)=1.0
mod(x, y)取模运算 (x - y * floor(x/y)),用于周期性循环。mod(7.5, 3.0) = 1.5
几何操作dot(a,b)/cross(a,b)向量点积(用于光照计算) / 向量叉积(仅三维向量)dot(vec3(1,0,0),vec3(0,1,0))=0.0
length(v)/distance(a,b)向量长度 / 两点间距离length(vec3(0,3,4))=5.0distance(vec2(0,0),vec2(3,4))=5.0
normalize(v)单位化向量normalize(vec3(0,3,4))=vec3(0,0.6,0.8)
纹理采样texture2D(sampler,uv)2D纹理采样(返回vec4颜色)texture2D(tex,uv).rgb获取纹理颜色
textureCube(sampler,dir)立方体贴图采样用于天空盒或环境贴图
比较与插值step(edge,x)x≥edge返回1.0,否则返回0.0step(0.5,0.3)=0.0
smoothstep(edge0,edge1,x)edge0edge1之间进行平滑插值(S形曲线)用于抗锯齿或渐变过渡
clamp(x,min,max)将x限制在[min,max]范围内clamp(1.5,0.0,1.0)=1.0
mix(x,y,a)线性插值:x*(1−a) + y*amix(0.0,2.0,0.5)=1.0
矩阵运算matrixCompMult(a,b)矩阵逐分量相乘(非矩阵乘法)结果矩阵的每个元素为a[i][j] * b[i][j]
transpose(m)/inverse(m)矩阵转置 / 矩阵求逆(需方阵)transpose(mat2(1,2,3,4))=mat2(1,3,2,4)
随机与噪声fract(x)获取小数部分(常用于伪随机数生成)fract(2.3)=0.3
noise(x)Perlin噪声生成(部分版本支持)需注意版本兼容性

补充说明:

  1. 函数分类依据:根据功能分为数学、几何、纹理等类别,避免逐条列举。
  2. 矩阵存储规则:GLSL矩阵为列主序(如mat2构造时按列填充)。

完整函数列表可参考 GLSL文档