Class BufferAttribute

This class stores data for an attribute (such as vertex positions, face indices, normals, colors, UVs, and any custom attributes )
associated with a THREE.BufferGeometry | BufferGeometry, which allows for more efficient passing of data to the GPU

When working with vector-like data, the .fromBufferAttribute( attribute, index ) helper methods on
THREE.Vector2.fromBufferAttribute | Vector2,
THREE.Vector3.fromBufferAttribute | Vector3,
THREE.Vector4.fromBufferAttribute | Vector4, and
THREE.Color.fromBufferAttribute | Color classes may be helpful.

Constructors

  • This creates a new THREE.GLBufferAttribute | GLBufferAttribute object.

    Parameters

    • array: TypedArray

      Must be a TypedArray. Used to instantiate the buffer.
      This array should have itemSize * numVertices elements, where numVertices is the number of vertices in the associated THREE.BufferGeometry | BufferGeometry.

    • itemSize: number

      the number of values of the array that should be associated with a particular vertex.
      For instance, if this attribute is storing a 3-component vector (such as a position, normal, or color),
      then itemSize should be 3.

    • Optionalnormalized: boolean

      Applies to integer data only.
      Indicates how the underlying data in the buffer maps to the values in the GLSL code.
      For instance, if array is an instance of UInt16Array, and normalized is true,
      the values 0 - +65535 in the array data will be mapped to 0.0f - +1.0f in the GLSL attribute.
      An Int16Array (signed) would map from -32768 - +32767 to -1.0f - +1.0f.
      If normalized is false, the values will be converted to floats unmodified,
      i.e. 32767 becomes 32767.0f.
      Default false.

    Returns BufferAttribute

    TypeError When the array is not a TypedArray;

Properties

name: string

Optional name for this attribute instance.

''
array: TypedArray

The TypedArray holding data stored in the buffer.

TypedArray

itemSize: number

The length of vectors that are being stored in the array.

Expects a Integer

usage: Usage

Defines the intended usage pattern of the data store for optimization purposes.
Corresponds to the usage parameter of
WebGLRenderingContext.bufferData.

After the initial use of a buffer, its usage cannot be changed. Instead, instantiate a new one and set the desired usage before the next render.

THREE.StaticDrawUsage | THREE.StaticDrawUsage.

Configures the bound GPU type for use in shaders. Either FloatType or IntType, default is FloatType.

Note: this only has an effect for integer arrays and is not configurable for float arrays. For lower precision
float types, see https://threejs.org/docs/#api/en/core/bufferAttributeTypes/BufferAttributeTypes.

updateRange: {
    offset: number;
    count: number;
}

This can be used to only update some components of stored vectors (for example, just the component related to color).

Type declaration

  • offset: number

    Position at which to start update.

    0

  • count: number

    -1, which means don't use update ranges.

{ offset: number = 0; count: number = -1 }

Will be removed in r169. Use "addUpdateRange()" instead.

updateRanges: {
    start: number;
    count: number;
}[]

This can be used to only update some components of stored vectors (for example, just the component related to
color). Use the .addUpdateRange function to add ranges to this array.

Type declaration

  • start: number

    Position at which to start update.

  • count: number

    The number of components to update.

version: number

A version number, incremented every time the needsUpdate property is set to true.

Expects a Integer

0

normalized: boolean

Indicates how the underlying data in the buffer maps to the values in the GLSL shader code.

constructor above for details.

false

count: number

Represents the number of items this buffer attribute stores. It is internally computed by dividing the
array's length by the itemSize. Read-only
property.

isBufferAttribute: true

Read-only flag to check if a given object is of type BufferAttribute.

This is a constant value

true

onUploadCallback: (() => void)

A callback function that is executed after the Renderer has transferred the attribute array data to the GPU.

Accessors

  • set needsUpdate(value): void
  • Flag to indicate that this attribute has changed and should be re-sent to the GPU.
    Set this to true when you modify the value of the array.

    Parameters

    • value: boolean

    Returns void

    Setting this to true also increments the version.

Methods

  • Sets the value of the onUploadCallback property.

    Parameters

    • callback: (() => void)

      function that is executed after the Renderer has transferred the attribute array data to the GPU.

        • (): void
        • Returns void

    Returns this

  • Set usage

    Parameters

    Returns this

    After the initial use of a buffer, its usage cannot be changed. Instead, instantiate a new one and set the desired usage before the next render.

  • Adds a range of data in the data array to be updated on the GPU. Adds an object describing the range to the
    .updateRanges array.

    Parameters

    • start: number
    • count: number

    Returns void

  • Clears the .updateRanges array.

    Returns void

  • Copy a vector from bufferAttribute[index2] to array[index1].

    Parameters

    Returns this

  • Copy the array given here (which can be a normal array or TypedArray) into array.

    Parameters

    Returns this

    TypedArray.set for notes on requirements if copying a TypedArray.

  • Applies matrix m to every Vector3 element of this BufferAttribute.

    Parameters

    Returns this

  • Applies matrix m to every Vector3 element of this BufferAttribute.

    Parameters

    Returns this

  • Applies normal matrix m to every Vector3 element of this BufferAttribute.

    Parameters

    Returns this

  • Applies matrix m to every Vector3 element of this BufferAttribute, interpreting the elements as a direction vectors.

    Parameters

    Returns this

  • Calls TypedArray.set( value, offset )
    on the array.

    Parameters

    • value: ArrayLike<number> | ArrayBufferView

      Array | Array or TypedArray from which to copy values.

    • Optionaloffset: number

      index of the array at which to start copying. Expects a Integer. Default 0.

    Returns this

    RangeError When offset is negative or is too large.

  • Returns the given component of the vector at the given index.

    Parameters

    • index: number
    • component: number

    Returns number

  • Sets the given component of the vector at the given index.

    Parameters

    • index: number
    • component: number
    • value: number

    Returns void

  • Returns the x component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    Returns number

  • Sets the x component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • x: number

    Returns this

  • Returns the y component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    Returns number

  • Sets the y component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • y: number

    Returns this

  • Returns the z component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    Returns number

  • Sets the z component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • z: number

    Returns this

  • Returns the w component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    Returns number

  • Sets the w component of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • z: number

    Returns this

  • Sets the x and y components of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • x: number
    • y: number

    Returns this

  • Sets the x, y and z components of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • x: number
    • y: number
    • z: number

    Returns this

  • Sets the x, y, z and w components of the vector at the given index.

    Parameters

    • index: number

      Expects a Integer

    • x: number
    • y: number
    • z: number
    • w: number

    Returns this

  • Convert this object to three.js to the data.attributes part of JSON Geometry format v4,

    Returns {
        itemSize: number;
        type: string;
        array: number[];
        normalized: boolean;
    }

    • itemSize: number
    • type: string
    • array: number[]
    • normalized: boolean