GPURenderBundleEncoder: setPipeline() method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Note: This feature is available in Web Workers.

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

js
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

js
function recordRenderPass(passEncoder) {
  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