inverseSqrt
inverseSqrt
提供一个高效的数学函数,用于计算一个数的平方根倒数(1/sqrt(x)),其最核心的应用是向量归一化。
核心优势
核心优势是性能,因为它直接映射到 GPU 硬件上高度优化的 `inversesqrt()` 指令,比 `div(1, sqrt(x))` 的组合操作更快,同时代码也更简洁,意图更明确。
常见用途
在向量归一化中计算乘法因子,这是最主要的应用。
创建非线性的距离衰减效果,如 1/distance 型衰减。
生成中心极亮、向外快速衰减的放射状渐变或冲击波。
在程序化几何体变形中,创建类似“引力”或“黑洞”的拉伸效果。
如何调整
调整其输入节点的值。输入值越接近 0,输出值会急剧增大,产生中心极亮的辉光或“爆发”效果;随着输入值增大,输出值会迅速减小然后平缓地趋近于 0。
代码示例
1// 计算归一化所需的乘法因子
2const invLength = inverseSqrt( myVector.dot( myVector ) );
3
4// 高效地完成向量归一化
5const normalizedVector = myVector.mul( invLength );