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。