arrayBuffer
arrayBuffer
一个用于将静态、不可变的二进制数据(来自 TypedArray)作为编译时常量直接硬编码到着色器中的节点,以确保极致的性能。
核心优势
核心优势在于通过将数据作为编译时常量嵌入,提供极致的性能,消除了所有运行时开销。同时它也很方便,能自动将 JavaScript 的 `TypedArray` 转换为所需的 GLSL 代码,避免了手动格式化字符串的繁琐和易错。
常见用途
固定的颜色空间转换矩阵
用于色调映射等效果的高性能、静态查找表(LUT)
噪声函数中固定的置换表等静态算法资源
硬编码的静态几何数据(如 SDF 球体参数)
如何调整
此节点创建后即不可变,无法在运行时调整。要改变其值,必须用一个新的 `TypedArray` 创建一个全新的 `arrayBuffer` 节点并重新编译材质。其效果是着色器固定行为的静态改变,例如,将一个正确的色彩校正矩阵替换为单位矩阵,会永久性地改变渲染输出的色彩风格。
代码示例
1
2// 一个固定的颜色空间转换矩阵,被硬编码到着色器中
3const srgbToLinearMatrix = arrayBuffer( new Float32Array([
4 2.2, 0.0, 0.0,
5 0.0, 2.2, 0.0,
6 0.0, 0.0, 2.2
7]));
8