GPURenderBundleEncoder: setPipeline() method

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The setPipeline() method of the GPURenderBundleEncoder interface sets the GPURenderPipeline to use for subsequent render bundle commands.

Note: This method is functionally identical to its equivalent on GPURenderPassEncodersetPipeline().

Syntax

setPipeline(pipeline)

Parameters

pipeline

The GPURenderPipeline to use for subsequent render bundle commands.

Return value

None (Undefined).

Validation

The following criteria must be met when calling setPipeline(), otherwise a GPUValidationError is generated and the GPURenderBundleEncoder becomes invalid:

Examples

function recordRenderPass(
  passEncoder: GPURenderBundleEncoder | GPURenderPassEncoder // TypeScript
) {
  if (settings.dynamicOffsets) {
    passEncoder.setPipeline(dynamicPipeline);
  } else {
    passEncoder.setPipeline(pipeline);
  }
  passEncoder.setVertexBuffer(0, vertexBuffer);
  passEncoder.setBindGroup(0, timeBindGroup);
  const dynamicOffsets = [0];
  for (let i = 0; i < numTriangles; ++i) {
    if (settings.dynamicOffsets) {
      dynamicOffsets[0] = i * alignedUniformBytes;
      passEncoder.setBindGroup(1, dynamicBindGroup, dynamicOffsets);
    } else {
      passEncoder.setBindGroup(1, bindGroups[i]);
    }
    passEncoder.draw(3, 1, 0, 0);
  }
}

The above snippet is taken from the WebGPU Samples Animometer example.

Specifications

Specification
WebGPU
# dom-gpurendercommandsmixin-setpipeline

Browser compatibility

BCD tables only load in the browser

See also