drawIndex
drawIndex
在 TSL 着色器中提供一个唯一的整数 ID,用于区分通过单一绘制调用(批处理)渲染的各个独立对象或组。
核心优势
它允许在保持单一绘制调用的极致性能的同时,实现实例间的差异化,且无需额外的顶点数据或复杂的CPU端uniform管理,极大地简化了高性能批处理渲染。
常见用途
为批处理中的每个对象程序化地生成不同颜色或属性。
根据对象ID从纹理图集(Texture Atlas)中选择不同的子贴图。
为大量相似对象(如草地、人群)创建具有唯一相位的交错动画。
在数据可视化中,用作索引从uniform数组中读取特定对象的数据。
如何调整
此节点的值不可调整;它是一个由渲染器提供的只读整数ID。它的值由你在JavaScript中如何设置几何体的绘制组(`geometry.addGroup()`)或使用MultiDraw功能决定。每个组会获得一个从0开始的连续ID。
代码示例
1// 使用 drawIndex 为每个实例创建唯一的动画相位偏移
2const animationPhase = time.mul( speed ).add( drawIndex.mul( offsetFactor ) );
3
4// 应用带有相位的动画,形成自然摆动效果
5const sway = sin( animationPhase );