Used to create a BufferBinding that can hold read/write storage bindings along with a result GPU buffer that can be used to get data back from the GPU.

Note that it is automatically created by the BindGroup when a storages input has its access property set to "read_write".

Hierarchy (view full)

Constructors

Properties

label: string

The label of the Binding

name: string

The name/key of the Binding

visibility: number

The visibility of the Binding in the shaders

shouldResetBindGroup: boolean

Flag indicating whether we should recreate the parentMesh bind group, usually when a resource has changed

shouldResetBindGroupLayout: boolean

Flag indicating whether we should recreate the parentMesh GPU bind group layout, usually when a resource layout has changed

cacheKey: string

A cache key allowing to get / set bindings from the device manager map cache. Used for BufferBinding only at the moment.

bindingType: BufferBindingType

The binding type of the BufferBinding

useStruct: boolean

Flag to indicate whether this BufferBinding buffer elements should be packed in a single structured object or if each one of them should be a separate binding.

inputs: Record<string, BufferBindingInput>

All the BufferBinding data inputs

childrenBindings: BufferBinding[]

Array of children BufferBinding used as struct children.

shouldUpdate: boolean

Flag to indicate whether one of the inputs value has changed and we need to update the GPUBuffer linked to the arrayBuffer array

bufferElements: AllowedBufferElement[]

An array describing how each corresponding inputs should be inserted into our arrayView array

arrayBufferSize: number

Total size of our arrayBuffer array in bytes

arrayBuffer: ArrayBuffer

Array buffer that will be sent to the GPUBuffer

arrayView: DataView

Data view of our array buffer

parentView: DataView

DataView inside the parent arrayBuffer if set.

parentViewSetBufferEls: {
    bufferElement: AllowedBufferElement;
    viewSetFunction: DataViewSetFunction;
}[]

Array of bufferElements and according view set functions to use if the parent is set.

Type declaration

buffer: Buffer

The Buffer holding the GPUBuffer

wgslStructFragment: string

A string to append to our shaders code describing the WGSL structure representing this BufferBinding

wgslGroupFragment: string[]

An array of strings to append to our shaders code declaring all the WGSL variables representing this BufferBinding

shouldCopyResult: boolean

Flag indicating whether whe should automatically copy the GPU buffer content into our result GPU buffer

resultBuffer: Buffer

The result GPUBuffer

Options used to create this WritableBufferBinding

Accessors

  • get resourceLayout(): {
        buffer: GPUBufferBindingLayout;
        offset?: number;
        size?: number;
    }
  • Get GPUBindGroupLayoutEntry#buffer | bind group layout entry resource.

    Returns {
        buffer: GPUBufferBindingLayout;
        offset?: number;
        size?: number;
    }

    • buffer: GPUBufferBindingLayout

      GPUBindGroupLayout | bind group layout resource

    • Optional offset?: number

      Offset in bytes in the parent buffer if set.

    • Optional size?: number

      Size in bytes in the parent buffer if set.

  • get resource(): {
        buffer: GPUBuffer;
        offset?: number;
        size?: number;
    }
  • Get GPUBindGroupEntry#resource | bind group resource.

    Returns {
        buffer: GPUBuffer;
        offset?: number;
        size?: number;
    }

    • buffer: GPUBuffer

      GPUBindGroup | bind group resource

    • Optional offset?: number

      Offset in bytes in the parent buffer if set.

    • Optional size?: number

      Size in bytes in the parent buffer if set.

Methods