GLSL 内置函数
log()
返回 x 的自然对数,是 exp 的反函数。它把乘法变成加法,可以用来做无限缩放效果。
函数签名
float log(float x)
vec2 log(vec2 x)
vec3 log(vec3 x)参数
- x
- 大于 0 的值。
返回值
x 的自然对数。
在线示例
修改右侧代码,左侧预览会实时更新。
工作原理
log(x) 回答"e 的几次方等于 x":log(1.0) 是 0,log(2.718) 是 1。
它有用的性质是:x 乘以一个倍数,log(x) 就加上一个常数。距离翻倍时,不管离得近还是远,结果总是增加同样的量(约 0.69)。
示例把 log(length(p)) 作为棋盘格的一个轴,角度作为另一个轴。每一圈格子都比里面那圈大固定的倍数,所以沿着 log 轴移动,看起来就像在隧道里无限前进。
常见用法
- 无限缩放和隧道:像示例那样使用对数极坐标。
- 压缩大范围数值:亮度或密度跨越好几个数量级时,用
log(1.0 + x)。
常见错误
log(0.0)或负数输入结果未定义,要加一个小偏移:log(length(p) + 1e-4)。- 以为是以 10 为底。GLSL 的
log是自然对数,以 2 为底请用log2。