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
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:
- If the
GPURenderPipeline
writes to the depth component of the depth/stencil attachment,depthReadOnly
(as specified in the descriptor of the originatingGPUCommandEncoder.beginRenderPass()
call) istrue
. - If the
GPURenderPipeline
writes 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