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 GPURenderPassEncoder — setPipeline().
Syntax
js
setPipeline(pipeline)
Parameters
pipeline-
The
GPURenderPipelineto 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:
- If the
GPURenderPipelinewrites to the depth component of the depth/stencil attachment,depthReadOnly(as specified in the descriptor of the originatingGPUCommandEncoder.beginRenderPass()call) istrue. - If the
GPURenderPipelinewrites to the stencil component of the depth/stencil attachment,stencilReadOnly(as specified in the descriptor of the originatingGPUCommandEncoder.beginRenderPass()call) istrue.
Examples
js
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
- The WebGPU API