EventDispatcher → Node → InputNode → UniformNode →

# BufferNode

A special type of uniform node which represents array-like data as uniform buffers. The access usually happens via `element()` which returns an instance of ArrayElementNode. For example:

In general, it is recommended to use the more managed UniformArrayNode since it handles more input types and automatically cares about buffer paddings.

## Code Example

    const bufferNode = buffer( array, 'mat4', count );
    const matrixNode = bufferNode.element( index ); // access a matrix from the buffer

## Constructor

### new BufferNode ( value : Array.<number>, bufferType : string, bufferCount : number )

Constructs a new buffer node.

value | Array-like buffer data.
bufferType | The data type of the buffer.
bufferCount | The count of buffer elements. Default is `0`.

## Properties

### .bufferCount : number

The uniform node that holds the value of the reference node.

Default is `0`.

### .bufferType : string

The data type of the buffer.

### .isBufferNode : boolean (readonly)

This flag can be used for type testing.

Default is `true`.

### .updateRanges : Array.<{start: number, count: number}>

An array of update ranges.

## Methods

### .addUpdateRange ( start : number, count : number )

Adds a range of data in the data array to be updated on the GPU.

start | Position at which to start update.
count | The number of components to update.

### .clearUpdateRanges ()

Clears the update ranges.

### .getElementType ( builder : NodeBuilder ) : string

The data type of the buffer elements.

builder | The current node builder.

Overrides: UniformNode#getElementType

Returns: The element type.

### .getInputType ( builder : NodeBuilder ) : string

Overwrites the default implementation to return a fixed value `'buffer'`.

builder | The current node builder.

Overrides: UniformNode#getInputType

Returns: The input type.

## Source

src/nodes/accessors/BufferNode.js