glsl函数
1. 数学函数
-
绝对值函数
-
abs(x):返回x的绝对值。
-
-
取整函数
-
ceil(x):返回大于或等于x的最小整数。 -
floor(x):返回小于或等于x的最大整数。 -
round(x):四舍五入返回最接近x的整数。 -
trunc(x):返回去掉小数部分的x(向零取整)。
-
-
幂运算
-
pow(x, y):返回x的y次方。 -
sqrt(x):返回x的平方根。 -
inversesqrt(x):返回x的平方根的倒数。
-
-
对数运算
-
log(x):返回x的自然对数。 -
log2(x):返回x的以 2 为底的对数。 -
log10(x):返回x的以 10 为底的对数。 -
exp(x):返回e的x次方。 -
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):返回x和y中较小的值。 -
max(x, y):返回x和y中较大的值。 -
clamp(x, minVal, maxVal):将x限制在minVal和maxVal范围内。 -
mix(x, y, a):根据a的值混合x和y,a为 0 时返回x,为 1 时返回y。 -
smoothstep(edge0, edge1, x):在edge0和edge1范围内根据x进行平滑过渡。
-
-
符号与正负
-
sign(x):返回x的符号,-1为负数,1为正数,0为零。
-
2. 向量操作
-
向量运算
-
dot(a, b):返回向量a和b的点积。 -
cross(a, b):返回向量a和b的叉积(仅适用于 3D 向量)。 -
length(v):返回向量v的长度(模)。 -
distance(a, b):返回向量a和b之间的距离。 -
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 纹理tex在coords位置的颜色值。 -
texture3D(tex, coords):获取 3D 纹理tex在coords位置的颜色值。 -
textureCube(tex, coords):获取立方体纹理tex在coords位置的颜色值。 -
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:控制循环流程。
-

浙公网安备 33010602011771号