GLSL 内置函数

log2()

返回以 2 为底的对数:1.0 要翻倍几次才能得到 x。是 exp2 的反函数。

函数签名

float log2(float x)
vec2 log2(vec2 x)
vec3 log2(vec3 x)

参数

x
大于 0 的值。

返回值

以 2 为底的 x 的对数。

在线示例

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

工作原理

log2(x) 数的是翻倍次数:log2(1.0) 是 0,log2(2.0) 是 1,log2(8.0) 是 3,log2(0.5) 是 -1。

示例中每一圈都对应到中心距离的一次翻倍:0.125 到 0.25、0.25 到 0.5、0.5 到 1.0。所以越往外圈越宽,但每一圈看起来都是下一圈的缩放版,形成无缝的无限缩放。

常见用法

  • 细节层级:用 log2(size) 选择 mip 层级或噪声倍频层。
  • 分形缩放:每翻倍一次就重复一次的圆环或格子。
  • 计算倍频层数:log2(maxFrequency / baseFrequency)。

常见错误

  • 输入 0 或负数,结果未定义。要加一个很小的偏移。
  • 以为结果是整数。log2(3.0) 约为 1.585,需要层级编号时再套一个 floor。

相关函数