trunc
trunc
通过直接丢弃数值的小数部分,将一个或多个浮点数(如 3.7 或 -2.8)向零取整,得到其整数部分(3 或 -2)。
核心优势
提供了一种在GPU上高效地将连续值(如UV坐标、时间)离散化的方法,是创建像素化、马赛克或阶梯状效果的基础。
常见用途
创建像素化或马赛克纹理效果
生成程序化网格或棋盘格图案
将平滑动画转为阶梯式跳变动画
如何调整
效果的粒度是通过在 `trunc` 之前对输入值进行乘法来控制的。一个更大的乘数会产生更密集、更精细的网格(更多的像素块),而一个更小的乘数则会产生更粗犷、更大的网格。
代码示例
1// 定义像素化网格的密度
2const density = 10;
3
4// 放大UV,截断小数,再缩放回原范围
5// 这会将连续的UV坐标转换为 10x10 的网格坐标
6const pixelatedUV = trunc(uv().mul(density)).div(density);