GPURenderBundleEncoder: setPipeline() method

Limited availability

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

Want more browser support for this feature? Tell us why.

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 GPURenderPassEncoder — setPipeline().

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

See also