ivec4
ivec4
将任意四维向量输入(如 vec4)的每个分量截断小数部分,从而转换为一个四分量整数向量(ivec4)。
核心优势
它是实现骨骼动画等高级功能的基石,能够安全地处理打包的整数顶点属性(如骨骼索引 `skinIndex`)。它将底层的 `ivec4()` 构造函数抽象化,使得在 TSL 中处理复合整数数据变得简单且不易出错。
常见用途
在骨骼动画中,读取每个顶点的骨骼索引(`skinIndex`)
将一个 `vec4` uniform 解包为四个独立的整数配置或标志位
为四维程序化噪声计算离散的整数晶格(Lattice)索引
在自定义渲染管线中为多维纹理数组提供寻址坐标
如何调整
其视觉效果是离散且分通道的。调整其输入 `vec4` 的一个分量,只会影响依赖该整数的逻辑。例如,一个分量可能控制颜色量化的级别(改变色块密度),而另一个分量可能作为开关(0 或 1),用于在两种完全不同的视觉效果之间进行硬性切换。
代码示例
1// 从一个 vec4 uniform 解包出四个整数配置
2const intSettings = ivec4( settingsUniform );
3
4// 使用第一个整数分量作为开关
5const isEffectOn = intSettings.x.equal( 1 );
6
7// 使用第二个整数分量作为量化级别
8const quantizedValue = floor( someValue.mul( intSettings.y ) ).div( intSettings.y );