uvec4
uvec4
将各种输入数据强制转换为一个由四个无符号整数组成的向量 (uvec4)。它主要用于将多个独立的整数数据(如 ID、索引、标志位)打包到一个变量中,或与整数纹理进行交互。
核心优势
高效地数据打包。允许将最多四个独立的信息(如骨骼索引、材质 ID 等)压缩到一个顶点属性中传递给 GPU,极大地节省了宝贵的顶点属性通道,是实现复杂顶点数据管理的核心。
常见用途
骨骼动画顶点数据
打包和解包 RGBA 颜色数据
GPU 粒子系统状态管理
如何调整
uvec4 的输出由输入值决定,核心行为是“截断”小数(非四舍五入)和“无符号化”(负数输入通常转为 0)。其构造函数非常灵活,可以组合不同类型和维度的向量来构建,例如 uvec4(myVec2, myFloat, myBool)。
代码示例
1// 将 0-1 范围的浮点颜色乘以 255
2const scaledColor = floatColor.mul( 255 );
3
4// 转换为 0-255 范围的 uvec4 整数颜色
5// 例如 vec4(0.5, 1.0, 0.75, 1.0) -> uvec4(127, 255, 191, 255)
6const integerColor = uvec4( scaledColor );