GLSL 内置函数

exp2()

返回 2 的 x 次幂。适合每一级翻倍或减半的场景,比如噪声的倍频层和曝光档位。

函数签名

float exp2(float x)
vec2 exp2(vec2 x)
vec3 exp2(vec3 x)

参数

x
指数。

返回值

2 的 x 次幂,结果总大于 0。

在线示例

修改右侧代码,左侧预览会实时更新。

工作原理

exp2(x) 的 x 每加 1,结果就翻一倍:exp2(0.0) 是 1,exp2(1.0) 是 2,exp2(3.0) 是 8,exp2(-1.0) 是 0.5。它和 pow(2.0, x) 相同,但意图更明确。

示例把行号当作 x,于是每一行的条纹数都是下一行的两倍:1、2、4、8、16。

常见用法

  • 噪声倍频层:分形噪声中频率用 exp2(float(i)),振幅用 exp2(-float(i))。
  • 曝光:color * exp2(stops) 按相机档位整档提亮。
  • 平滑缩放:exp2(u_time) 以视觉上恒定的速度放大。

常见错误

  • 指数太大很快超出 mediump 精度,exp2(16.0) 就已经是 65536。
  • 直接传入 int 类型的循环变量。要先转换:exp2(float(i))。

相关函数