referenceBuffer
referenceBuffer
一个用于将 JavaScript 中的数据数组(如颜色、向量)作为统一缓冲区(Uniform Buffer)高效传递给着色器的节点,并支持在着色器中通过索引动态访问。
核心优势
核心优势是利用统一缓冲区对象(UBO)实现高效的批量数据传输,显著减少通信开销,并在着色器中创建了一个真正的可索引数组,为实现循环处理多光源等高级算法提供了基础。
常见用途
存储并处理多个光源的位置和颜色信息
为大规模实例化渲染提供每个实例的独立属性
作为可切换的颜色调色板或查找表(LUT)
如何调整
通过在 JavaScript 中直接修改其引用的源数据数组来调整。例如,修改数组中的单个颜色会精确改变对应实例的外观;将整个数组属性替换为一个新数组,则可以实现全局性的主题或数据切换(如更换整个调色板)。
代码示例
1
2// 引用一个名为 'colors' 的颜色数组属性
3const colorBuffer = referenceBuffer( 'colors', 'color', INSTANCE_COUNT, material );
4
5// 在着色器中,使用实例ID从缓冲区中索引颜色
6material.colorNode = colorBuffer.element( instanceId );
7