In earlier three.js versions it was only possible to define attribute data
on geometry level. With BufferAttributeNode, it is also possible to do this
on the node level.
const geometry = new THREE.PlaneGeometry();
const positionAttribute = geometry.getAttribute( 'position' );
const colors = [];
for ( let i = 0; i < position.count; i ++ ) {
colors.push( 1, 0, 0 );
}
material.colorNode = bufferAttribute( new THREE.Float32BufferAttribute( colors, 3 ) );
export {}This new approach is especially interesting when geometry data are generated via compute shaders. The below line converts a storage buffer into an attribute node.
material.positionNode = positionBuffer.toAttribute();
export {}Constructor
new BufferAttributeNode(value, bufferType?, bufferStride?, bufferOffset?)| Parameter | Type | Default Value |
|---|---|---|
| value | any | — |
| bufferType? | null | string | null |
| bufferStride? | number | 0 |
| bufferOffset? | number | 0 |
Constructs a new buffer attribute node.
| Accessor | Type | |
|---|---|---|
| get type | string | |
Properties
| Property | Type | Default Value | |
|---|---|---|---|
| isBufferNode | boolean | — | |
| bufferType | null | string | — | |
| bufferStride | number | — | |
| bufferOffset | number | — | |
| usage | number | — | |
| instanced | boolean | — | |
| attribute | any | — | |
| Method | Type | |
|---|---|---|
| getHash | (builder: NodeBuilder) => string | |
| generateNodeType | (builder: NodeBuilder) => string | |
| setup | (builder: NodeBuilder) => void | |
| generate | (builder: NodeBuilder) => string | |
| getInputType | () => string | |
| setUsage | (value: number) => BufferAttributeNode | |
| setInstanced | (value: boolean) => BufferAttributeNode | |
Extends
InputNodeTSL function for creating a buffer attribute node.
| Parameter | Type | Default Value |
|---|---|---|
| array | any | — |
| type? | null | string | null |
| stride? | number | 0 |
| offset? | number | 0 |
Returns
Node | BufferAttributeNodeTSL function for creating a buffer attribute node but with dynamic draw usage. Use this function if attribute data are updated per frame.
| Parameter | Type | Default Value |
|---|---|---|
| array | any | — |
| type? | null | string | null |
| stride? | number | 0 |
| offset? | number | 0 |
Returns
Node | BufferAttributeNodeTSL function for creating a buffer attribute node but with enabled instancing
| Parameter | Type | Default Value |
|---|---|---|
| array | any | — |
| type? | null | string | null |
| stride? | number | 0 |
| offset? | number | 0 |
Returns
Node | BufferAttributeNodeTSL function for creating a buffer attribute node but with dynamic draw usage and enabled instancing
| Parameter | Type | Default Value |
|---|---|---|
| array | any | — |
| type? | null | string | null |
| stride? | number | 0 |
| offset? | number | 0 |
Returns
Node | BufferAttributeNode