materialReference (函数)
materialReference (函数)
一个工厂函数,用于创建能引用任意 JavaScript 材质属性(无论是标准还是自定义属性)的节点,是连接 JS 与 TSL 的通用数据桥梁。
核心优势
它提供了终极的可扩展性,用一行代码替代了复杂的 `onBeforeCompile` 或 `ShaderMaterial`,实现了从 JS 到 TSL 的直观数据绑定,并能轻松实现材质间的参数联动。
常见用途
为自定义着色器效果(如溶解、能量护盾)创建可从 JS 控制的参数。
实现不同物体材质间的参数联动,如用一个控制台的颜色驱动另一个物体的辉光。
访问没有预设 TSL 节点的标准材质属性,如 `aoMapIntensity`。
制作可配置的材质变体,通过在 JS 中改变属性来生成不同外观。
如何调整
此节点通过在 JavaScript 中修改其引用的材质属性来“调整”,例如 `myMaterial.rippleFrequency = 20.0;`。其视觉效果完全取决于该值在 TSL 节点网络中如何被使用,例如改变能量护盾波纹的密度或强度。
代码示例
1
2// 引用 JS 材质上的自定义属性
3const rippleFreq = materialReference('rippleFrequency', 'float');
4const rippleStrength = materialReference('rippleStrength', 'float');
5
6// 使用引用的值来创建波纹并扭曲法线
7const ripplePattern = sin(uv().y.mul(rippleFreq).add(time));
8const distortedNormal = normalView.add(vec3(ripplePattern).mul(rippleStrength));
9