NodeMaterial
NodeMaterial
所有节点材质的基类。通过连接 colorNode、positionNode、vertexNode、fragmentNode 等输入,以节点方式覆盖顶点与片元流程来生成自定义着色器;通常作为基类使用,也可直接实例化以拼装自定义材质。
核心优势
高度模块化与可组合。可在不手写 GLSL 的前提下精确覆盖顶点位置、颜色、法线、透明度、深度、阴影、MRT 和最终输出等环节。
常见用途
作为其他节点材质的基类以扩展
用 positionNode 做程序化顶点位移或动画
用 fragmentNode 或 outputNode 构建自定义片元输出
快速原型新的着色模型或 NPR 效果
按对象定制遮罩、Alpha 测试或多渲染目标写入
如何调整
通过为属性赋值节点:colorNode 控制基础颜色;opacityNode 控制透明;normalNode 控制法线;positionNode 做顶点操作。需要完全控制时可设置 vertexNode 或 fragmentNode;按需使用 maskNode、alphaTestNode、backdropNode/backdropAlphaNode、outputNode、mrtNode、depthNode、receivedShadowNode/castShadowNode、receivedShadowPositionNode/castShadowPositionNode、lightsNode、envNode、aoNode 等。
代码示例
1<mesh>
2 <sphereGeometry />
3 {/* 直接使用 NodeMaterial:覆盖顶点位移与片元颜色 */}
4 <nodeMaterial
5 positionNode={
6 positionLocal.add(
7 normalLocal.mul(
8 sin(time).mul(0.1)
9 )
10 )
11 }
12 fragmentNode={color(0.2, 0.6, 1.0)}
13 />
14</mesh>