uniformArray
uniformArray
一个节点,用于将一组同类型的数据(如颜色、向量)作为一个整体,从 JavaScript 高效地传递给着色器。
核心优势
极大地简化了批量数据的管理和传输。它允许编写可动态扩展的着色器逻辑(例如处理任意数量的光源),而无需修改和重新编译着色器代码,增强了灵活性。
常见用途
为卡通渲染(Cel Shading)提供色阶调色板。
传递多个光源的位置和颜色信息以实现多点照明。
定义复杂的多色渐变色标。
如何调整
通过两种方式调整:一是在 JS 中修改其 .value 数组来改变整个数据集(如切换调色板);二是在着色器中改变索引的计算逻辑,从而改变数据的使用方式(如从基于光照改为基于模型高度来上色)。
代码示例
1// 在 JS 中: const celColors = [ color1, color2, color3 ];
2const colorsNode = uniformArray( celColors );
3
4// 在 TSL 中,根据光照因子 (0-1) 计算索引
5const colorIndex = lightFactor.mul( colorsNode.count ).floor();
6
7// 使用 .element() 方法和索引从数组中获取颜色
8material.colorNode = colorsNode.element( colorIndex );