glsl函数

1. 数学函数

  • 绝对值函数

    • abs(x):返回 x 的绝对值。

  • 取整函数

    • ceil(x):返回大于或等于 x 的最小整数。

    • floor(x):返回小于或等于 x 的最大整数。

    • round(x):四舍五入返回最接近 x 的整数。

    • trunc(x):返回去掉小数部分的 x(向零取整)。

  • 幂运算

    • pow(x, y):返回 xy 次方。

    • sqrt(x):返回 x 的平方根。

    • inversesqrt(x):返回 x 的平方根的倒数。

  • 对数运算

    • log(x):返回 x 的自然对数。

    • log2(x):返回 x 的以 2 为底的对数。

    • log10(x):返回 x 的以 10 为底的对数。

    • exp(x):返回 ex 次方。

    • exp2(x):返回 2 的 x 次方。

  • 三角函数

    • sin(x):返回 x 的正弦值。

    • cos(x):返回 x 的余弦值。

    • tan(x):返回 x 的正切值。

    • asin(x):返回 x 的反正弦值。

    • acos(x):返回 x 的反余弦值。

    • atan(x):返回 x 的反正切值。

    • atan(y, x):返回 y/x 的反正切值,结果在 π 范围内。

  • 双曲函数

    • sinh(x):返回 x 的双曲正弦值。

    • cosh(x):返回 x 的双曲余弦值。

    • tanh(x):返回 x 的双曲正切值。

    • asinh(x):返回 x 的反双曲正弦值。

    • acosh(x):返回 x 的反双曲余弦值。

    • atanh(x):返回 x 的反双曲正切值。

  • 最值和范围

    • min(x, y):返回 xy 中较小的值。

    • max(x, y):返回 xy 中较大的值。

    • clamp(x, minVal, maxVal):将 x 限制在 minValmaxVal 范围内。

    • mix(x, y, a):根据 a 的值混合 xya 为 0 时返回 x,为 1 时返回 y

    • smoothstep(edge0, edge1, x):在 edge0edge1 范围内根据 x 进行平滑过渡。

  • 符号与正负

    • sign(x):返回 x 的符号,-1 为负数,1 为正数,0 为零。

2. 向量操作

  • 向量运算

    • dot(a, b):返回向量 ab 的点积。

    • cross(a, b):返回向量 ab 的叉积(仅适用于 3D 向量)。

    • length(v):返回向量 v 的长度(模)。

    • distance(a, b):返回向量 ab 之间的距离。

    • normalize(v):返回单位化后的向量。

    • reflect(I, N):计算向量 I 关于法向量 N 的反射。

    • refract(I, N, eta):计算向量 I 和法向量 N 的折射,eta 是折射率。

  • 向量分量

    • swizzle:通过重排分量访问向量元素。例如,v.xy 表示向量 v 的前两个分量。

3. 矩阵操作

  • 矩阵运算

    • transpose(m):返回矩阵 m 的转置。

    • inverse(m):返回矩阵 m 的逆矩阵。

    • determinant(m):返回矩阵 m 的行列式。

    • matrixCompMult(m1, m2):逐元素乘法。

  • 矩阵与向量运算

    • mat2, mat3, mat4:分别表示 2x2、3x3、4x4 矩阵。

    • mul(mat, vec):矩阵与向量的乘法。

4. 纹理操作

  • 纹理函数

    • texture2D(tex, coords):获取 2D 纹理 texcoords 位置的颜色值。

    • texture3D(tex, coords):获取 3D 纹理 texcoords 位置的颜色值。

    • textureCube(tex, coords):获取立方体纹理 texcoords 位置的颜色值。

    • textureLod(tex, coords, lod):获取纹理的指定 LOD 层级的颜色值。

5. 片段与顶点着色器常用函数

  • 片段着色器函数

    • gl_FragColor:用于片段着色器中设置输出的颜色。

    • gl_FrontFacing:一个内建变量,判断当前片段是否为正面片段。

    • gl_FragDepth:自定义片段深度值。

  • 顶点着色器函数

    • gl_Position:设置顶点的裁剪空间位置。

    • gl_VertexID:获取当前顶点的索引。

    • gl_InstanceID:获取当前实例化渲染的实例索引。

6. 系统变量与常量

  • 常量

    • PI:圆周率常量。

    • E:自然对数的底数常量。

    • MAX_VERTEX_ATTRIBS:最大顶点属性数。

    • MAX_TEXTURE_IMAGE_UNITS:最大纹理单位数。

  • 系统变量

    • gl_Position:顶点着色器中输出的裁剪空间位置。

    • gl_FragColor:片段着色器中输出的颜色值。

    • gl_FragDepth:片段深度,决定片段是否被丢弃。

    • gl_FrontFacing:一个内建变量,判断当前片段是前面还是后面。

7. 其他常用功能

  • 条件判断

    • if, else:条件语句。

    • for, while:循环语句。

    • continue, break:控制循环流程。

posted @ 2025-05-12 19:01  SimoonJia  阅读(170)  评论(0)    收藏  举报