gpu-curtains
    Preparing search index...

    Used to handle all inputs data sent to the GPU.

    In WebGPU, data (buffers, textures or samplers, called bindings) are organised by bind groups, containing those bindings.

    A BindGroup is responsible for creating each BufferBinding GPUBuffer and then the GPUBindGroup and GPUBindGroupLayout that are used to create GPUComputePipeline or GPURenderPipeline.

    Those are generally automatically created by the Material using this BindGroup. If you need to manually create them, you will have to call its createBindGroup() method

    A BindGroup is best suited to handle GPUBuffer only bindings. If you need to handle GPUSampler, a GPUTexture or a GPUExternalTexture, you should use a TextureBindGroup instead.

    Each time one of the binding resource changes, its bindGroup will be recreated (usually, when a GPUTexture is uploaded).

    Each time one of the binding resource layout changes, its bindGroupLayout and bindGroup will be recreated, and the GPUComputePipeline or GPURenderPipeline will be recreated as well.

    // set our main GPUCurtains instance
    const gpuCurtains = new GPUCurtains({
    container: '#canvas' // selector of our WebGPU canvas container
    })

    // set the GPU device
    // note this is asynchronous
    await gpuCurtains.setDevice()

    const bindGroup = new BindGroup(gpuCurtains, {
    label: 'My bind group',
    uniforms: {
    params: {
    visibility: ['fragment'],
    struct: {
    opacity: {
    value: 'f32',
    value: 1,
    },
    mousePosition: {
    value: 'vec2f',
    value: new Vec2(),
    },
    },
    },
    },
    })

    // create the GPU buffer, bindGroupLayout and bindGroup
    bindGroup.createBindGroup()

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    type: string

    The type of the BindGroup.

    uuid: string

    The universal unique id of the BindGroup.

    renderer: Renderer

    The Renderer used.

    Options used to create this BindGroup.

    index: number

    Index of this BindGroup, used to link struct in the shaders.

    List of bindings (buffers, texture, etc.) handled by this BindGroup.

    List of all bindings that handle a GPUBuffer.

    uniforms: Record<string, Record<string, BufferBindingInput>>

    Object containing all uniforms inputs handled by this BindGroup.

    storages: Record<string, Record<string, BufferBindingInput>>

    Object containing all read only or read/write storages inputs handled by this BindGroup.

    Our BindGroup entries objects.

    bindGroupLayout: GPUBindGroupLayout
    bindGroup: GPUBindGroup
    layoutCacheKey: string

    A cache key allowing to get / set GPUBindGroupLayout from the device manager map cache.

    pipelineCacheKey: string

    A cache key allowing the PipelineManager to compare RenderPipelineEntry bind groups content.

    needsPipelineFlush: boolean

    Flag indicating whether we need to flush and recreate the pipeline using this BindGroup.

    consumers: Set<string>

    A Set to store this BindGroup consumers (Material uuid).

    Accessors

    • get shouldCreateBindGroup(): boolean

      Get whether the GPU bind group is ready to be created. It can be created if it has bindings and has not been created yet.

      Returns boolean

    Methods

    • Fill in our entries bindGroupLayout and bindGroup arrays with the correct binding resources. For buffer struct, create a GPUBuffer first if needed

      Returns void