struct
struct
struct 节点允许你定义自定义的复合数据类型,将多个相关的节点(如光源的位置、颜色、强度)封装成一个有组织的逻辑单元。这对于在着色器中管理复杂数据至关重要。
核心优势
核心优势在于数据的封装与组织。它通过将相关变量打包成一个逻辑单元,极大地提升了节点图的整洁性、可读性和可维护性,并促进了着色器代码的模块化与重用。
常见用途
为 PBR 等材质定义一个包含所有表面属性(如颜色、法线、粗糙度)的数据包。
封装一个光源的所有参数(如位置、颜色、强度、范围)以便于传递。
在 GPGPU 计算中,定义缓冲区中单个元素(如粒子)的数据结构。
如何调整
调整 struct 实例是通过改变其初始化成员的输入节点来完成的。结构体本身只是一个容器,其效果完全取决于内部的数据。例如,将其 baseColor 成员的输入从一个静态颜色节点换成一个纹理节点,物体的表面就会从纯色变为显示纹理。
代码示例
1// 1. 定义一个包含颜色和粗糙度的新类型
2const MaterialInfo = struct({
3 baseColor: vec3(),
4 roughness: float()
5});
6
7// 2. 创建一个实例并访问其成员
8const myData = MaterialInfo({ baseColor: vec3(1, 0, 0), roughness: float(0.5) });
9const color = myData.baseColor; // <-- 得到一个 vec3 节点