---
title: "GPURenderBundleEncoder | JavaScript maps SDK"
description: "Documentation for MapTiler SDK"
---

# Interface GPURenderBundleEncoder

The **`GPURenderBundleEncoder`** interface of the WebGPU API is used to pre-record bundles of commands. Available only in secure contexts.

[MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder)

interface GPURenderBundleEncoder {  
    [label](#label): string;  
    [draw](#draw-1)(  
        vertexCount: number,  
        instanceCount?: number,  
        firstVertex?: number,  
        firstInstance?: number,  
    ): void;  
    [drawIndexed](#drawindexed-1)(  
        indexCount: number,  
        instanceCount?: number,  
        firstIndex?: number,  
        baseVertex?: number,  
        firstInstance?: number,  
    ): void;  
    [drawIndexedIndirect](#drawindexedindirect-1)(  
        indirectBuffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/),  
        indirectOffset: number,  
    ): void;  
    [drawIndirect](#drawindirect-1)(indirectBuffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/), indirectOffset: number): void;  
    [finish](#finish-1)(descriptor?: [GPURenderBundleDescriptor](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderBundleDescriptor/)): [GPURenderBundle](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderBundle/);  
    [insertDebugMarker](#insertdebugmarker-1)(markerLabel: string): void;  
    [popDebugGroup](#popdebuggroup-1)(): void;  
    [pushDebugGroup](#pushdebuggroup-1)(groupLabel: string): void;  
    [setBindGroup](#setbindgroup-1)(  
        index: number,  
        bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null,  
        dynamicOffsets?: number\[\],  
    ): void;  
    [setBindGroup](#setbindgroup-2)(  
        index: number,  
        bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null,  
        dynamicOffsetsData: Uint32Array<[ArrayBufferLike](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.ArrayBufferLike/)\>,  
        dynamicOffsetsDataStart: number,  
        dynamicOffsetsDataLength: number,  
    ): void;  
    [setBindGroup](#setbindgroup-3)(  
        index: number,  
        bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null,  
        dynamicOffsets?: [Iterable](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.Iterable/)<number, any, any\>,  
    ): void;  
    [setIndexBuffer](#setindexbuffer-1)(  
        buffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/),  
        indexFormat: [GPUIndexFormat](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.GPUIndexFormat/),  
        offset?: number,  
        size?: number,  
    ): void;  
    [setPipeline](#setpipeline-1)(pipeline: [GPURenderPipeline](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderPipeline/)): void;  
    [setVertexBuffer](#setvertexbuffer-1)(  
        slot: number,  
        buffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/) | null,  
        offset?: number,  
        size?: number,  
    ): void;  
}

#### Hierarchy ([View Summary](https://docs.maptiler.com/sdk-js/api-reference/hierarchy/#Externals.GPURenderBundleEncoder))

-   [GPUBindingCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/)
-   [GPUDebugCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/)
-   [GPUObjectBase](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUObjectBase/)
-   [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/)
    -   GPURenderBundleEncoder

##### Index

### Properties[](#properties)

[label](#label)

### Methods[](#methods)

[draw](#draw) [drawIndexed](#drawindexed) [drawIndexedIndirect](#drawindexedindirect) [drawIndirect](#drawindirect) [finish](#finish) [insertDebugMarker](#insertdebugmarker) [popDebugGroup](#popdebuggroup) [pushDebugGroup](#pushdebuggroup) [setBindGroup](#setbindgroup) [setIndexBuffer](#setindexbuffer) [setPipeline](#setpipeline) [setVertexBuffer](#setvertexbuffer)

## Properties[](#properties-1)

### label[](#label)

label: string

[MDN Reference](https://developer.mozilla.org/docs/Web/API/GPUBindGroup/label)

Inherited from [GPUObjectBase](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUObjectBase/).[label](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUObjectBase/#label)

## Methods[](#methods-1)

### draw[](#draw)

-   draw(  
        vertexCount: number,  
        instanceCount?: number,  
        firstVertex?: number,  
        firstInstance?: number,  
    ): void[](#draw-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/draw)
    
    #### Parameters
    
    -   vertexCount: number
    -   `Optional`instanceCount: number
    -   `Optional`firstVertex: number
    -   `Optional`firstInstance: number
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[draw](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#draw)
    

### drawIndexed[](#drawindexed)

-   drawIndexed(  
        indexCount: number,  
        instanceCount?: number,  
        firstIndex?: number,  
        baseVertex?: number,  
        firstInstance?: number,  
    ): void[](#drawindexed-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/drawIndexed)
    
    #### Parameters
    
    -   indexCount: number
    -   `Optional`instanceCount: number
    -   `Optional`firstIndex: number
    -   `Optional`baseVertex: number
    -   `Optional`firstInstance: number
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[drawIndexed](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#drawindexed)
    

### drawIndexedIndirect[](#drawindexedindirect)

-   drawIndexedIndirect(indirectBuffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/), indirectOffset: number): void[](#drawindexedindirect-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/drawIndexedIndirect)
    
    #### Parameters
    
    -   indirectBuffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/)
    -   indirectOffset: number
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[drawIndexedIndirect](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#drawindexedindirect)
    

### drawIndirect[](#drawindirect)

-   drawIndirect(indirectBuffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/), indirectOffset: number): void[](#drawindirect-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/drawIndirect)
    
    #### Parameters
    
    -   indirectBuffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/)
    -   indirectOffset: number
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[drawIndirect](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#drawindirect)
    

### finish[](#finish)

-   finish(descriptor?: [GPURenderBundleDescriptor](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderBundleDescriptor/)): [GPURenderBundle](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderBundle/)[](#finish-1)
    
    The **`finish()`** method of the GPURenderBundleEncoder interface completes recording of the current render bundle command sequence, returning a GPURenderBundle object that can be passed into a GPURenderPassEncoder.executeBundles() call to execute those commands in a specific render pass.
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/finish)
    
    #### Parameters
    
    -   `Optional`descriptor: [GPURenderBundleDescriptor](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderBundleDescriptor/)
    
    #### Returns [GPURenderBundle](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderBundle/)
    

### insertDebugMarker[](#insertdebugmarker)

-   insertDebugMarker(markerLabel: string): void[](#insertdebugmarker-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/insertDebugMarker)
    
    #### Parameters
    
    -   markerLabel: string
    
    #### Returns void
    
    Inherited from [GPUDebugCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/).[insertDebugMarker](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/#insertdebugmarker)
    

### popDebugGroup[](#popdebuggroup)

-   popDebugGroup(): void[](#popdebuggroup-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/popDebugGroup)
    
    #### Returns void
    
    Inherited from [GPUDebugCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/).[popDebugGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/#popdebuggroup)
    

### pushDebugGroup[](#pushdebuggroup)

-   pushDebugGroup(groupLabel: string): void[](#pushdebuggroup-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPUCommandEncoder/pushDebugGroup)
    
    #### Parameters
    
    -   groupLabel: string
    
    #### Returns void
    
    Inherited from [GPUDebugCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/).[pushDebugGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUDebugCommandsMixin/#pushdebuggroup)
    

### setBindGroup[](#setbindgroup)

-   setBindGroup(  
        index: number,  
        bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null,  
        dynamicOffsets?: number\[\],  
    ): void[](#setbindgroup-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/setBindGroup)
    
    #### Parameters
    
    -   index: number
    -   bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null
    -   `Optional`dynamicOffsets: number\[\]
    
    #### Returns void
    
    Inherited from [GPUBindingCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/).[setBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/#setbindgroup)
    
-   setBindGroup(  
        index: number,  
        bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null,  
        dynamicOffsetsData: Uint32Array<[ArrayBufferLike](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.ArrayBufferLike/)\>,  
        dynamicOffsetsDataStart: number,  
        dynamicOffsetsDataLength: number,  
    ): void[](#setbindgroup-2)
    
    #### Parameters
    
    -   index: number
    -   bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null
    -   dynamicOffsetsData: Uint32Array<[ArrayBufferLike](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.ArrayBufferLike/)\>
    -   dynamicOffsetsDataStart: number
    -   dynamicOffsetsDataLength: number
    
    #### Returns void
    
    Inherited from [GPUBindingCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/).[setBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/#setbindgroup)
    
-   setBindGroup(  
        index: number,  
        bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null,  
        dynamicOffsets?: [Iterable](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.Iterable/)<number, any, any\>,  
    ): void[](#setbindgroup-3)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPUComputePassEncoder/setBindGroup)
    
    #### Parameters
    
    -   index: number
    -   bindGroup: [GPUBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindGroup/) | null
    -   `Optional`dynamicOffsets: [Iterable](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.Iterable/)<number, any, any\>
    
    #### Returns void
    
    Inherited from [GPUBindingCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/).[setBindGroup](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBindingCommandsMixin/#setbindgroup)
    

### setIndexBuffer[](#setindexbuffer)

-   setIndexBuffer(  
        buffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/),  
        indexFormat: [GPUIndexFormat](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.GPUIndexFormat/),  
        offset?: number,  
        size?: number,  
    ): void[](#setindexbuffer-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/setIndexBuffer)
    
    #### Parameters
    
    -   buffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/)
    -   indexFormat: [GPUIndexFormat](https://docs.maptiler.com/sdk-js/api-reference/types/Externals.GPUIndexFormat/)
    -   `Optional`offset: number
    -   `Optional`size: number
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[setIndexBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#setindexbuffer)
    

### setPipeline[](#setpipeline)

-   setPipeline(pipeline: [GPURenderPipeline](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderPipeline/)): void[](#setpipeline-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/setPipeline)
    
    #### Parameters
    
    -   pipeline: [GPURenderPipeline](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderPipeline/)
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[setPipeline](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#setpipeline)
    

### setVertexBuffer[](#setvertexbuffer)

-   setVertexBuffer(  
        slot: number,  
        buffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/) | null,  
        offset?: number,  
        size?: number,  
    ): void[](#setvertexbuffer-1)
    
    [MDN Reference](https://developer.mozilla.org/docs/Web/API/GPURenderBundleEncoder/setVertexBuffer)
    
    #### Parameters
    
    -   slot: number
    -   buffer: [GPUBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPUBuffer/) | null
    -   `Optional`offset: number
    -   `Optional`size: number
    
    #### Returns void
    
    Inherited from [GPURenderCommandsMixin](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/).[setVertexBuffer](https://docs.maptiler.com/sdk-js/api-reference/interfaces/Externals.GPURenderCommandsMixin/#setvertexbuffer)
