---
title: GPURenderPass
---
An active render pass. Issue all draw calls before calling finish().
## Methods
### `setPipeline`
{/* function setPipeline(self, pipeline: GPUPipeline): () */}
```lua
setPipeline(pipeline: GPUPipeline) -> ()
```
Bind a pipeline for subsequent draw calls.
### `setVertexBuffer`
{/* function setVertexBuffer(self, slot: number, buffer: GPUBuffer): () */}
```lua
setVertexBuffer(slot: number, buffer: GPUBuffer) -> ()
```
Bind a vertex buffer to slot (0-based).
### `setIndexBuffer`
{/* function setIndexBuffer(self, buffer: GPUBuffer, format: ('uint16' | 'uint32')?): () */}
```lua
setIndexBuffer(buffer: GPUBuffer, format: ('uint16' | 'uint32')?) -> ()
```
Bind an index buffer. format defaults to 'uint16'.
### `setBindGroup`
{/* function setBindGroup(self, groupIndex: number, bg: GPUBindGroup, dynamicOffsets: {number}?): () */}
```lua
setBindGroup(groupIndex: number, bg: GPUBindGroup, dynamicOffsets: {number}?) -> ()
```
Bind a pre-created BindGroup to a group slot.
dynamicOffsets: one byte offset per dynamic UBO in this group
(dynamic UBOs are declared on the pipeline via
`BindGroupLayoutEntry.hasDynamicOffset`). Order matches the UBOs' appearance
in `BindGroupDesc.ubos`. Typical 3D pattern: shared texture
BindGroup at group 1, per-object UBO dynamic offset at group 0.
### `setViewport`
{/* function setViewport(self, x: number, y: number, w: number, h: number): () */}
```lua
setViewport(x: number, y: number, w: number, h: number) -> ()
```
Set the render viewport in pixels. Origin is top-left on all backends except GL (bottom-left).
### `setScissorRect`
{/* function setScissorRect(self, x: number, y: number, w: number, h: number): () */}
```lua
setScissorRect(x: number, y: number, w: number, h: number) -> ()
```
Set the scissor rectangle in pixels.
### `setStencilReference`
{/* function setStencilReference(self, ref: number): () */}
```lua
setStencilReference(ref: number) -> ()
```
Set the stencil reference value.
### `setBlendColor`
{/* function setBlendColor(self, r: number, g: number, b: number, a: number): () */}
```lua
setBlendColor(r: number, g: number, b: number, a: number) -> ()
```
Set the constant blend color for 'constant' / 'one-minus-constant' factors.
### `draw`
{/* function draw(self, vertexCount: number, instanceCount: number?, firstVertex: number?): () */}
```lua
draw(vertexCount: number, instanceCount: number?, firstVertex: number?) -> ()
```
Non-indexed draw. instanceCount defaults to 1, firstVertex to 0.
### `drawIndexed`
{/* function drawIndexed(self, indexCount: number, instanceCount: number?, firstIndex: number?): () */}
```lua
drawIndexed(indexCount: number, instanceCount: number?, firstIndex: number?) -> ()
```
Indexed draw. instanceCount defaults to 1, firstIndex to 0.
### `finish`
{/* function finish(self): () */}
```lua
finish() -> ()
```
Submit the pass. Any further method calls on this object will error.