Limited availability
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 setBindGroup()
method of the GPURenderPassEncoder
interface sets the GPUBindGroup
to use for subsequent render commands, for a given index.
setBindGroup(index, bindGroup)
setBindGroup(index, bindGroup, dynamicOffsets)
setBindGroup(index, bindGroup, dynamicOffsets, dynamicOffsetsStart,
dynamicOffsetsLength)
Parameters
index
The index to set the bind group at. This matches the n
index value of the corresponding @group(n)
attribute in the shader code (GPUShaderModule
) used in the related pipeline.
bindGroup
The GPUBindGroup
to use for subsequent render commands, or null
, in which case any previously-set bind group in the given slot is unset.
dynamicOffsets
Optional
A value specifying the offset, in bytes, for each entry in bindGroup
with hasDynamicOffset: true
set (i.e., in the descriptor of the GPUDevice.createBindGroupLayout()
call that created the GPUBindGroupLayout
object that the bindGroup
is based on). This value can be:
Uint32Array
containing numbers specifying the offsets.If a Uint32Array
value is specified for dynamicOffsets
, both of the following parameters are also required:
dynamicOffsetsStart
A number specifying the offset, in array elements, into dynamicOffsetsData
, where the dynamic offset data begins.
dynamicOffsetsLength
A number specifying the number of dynamic offset values to be read from in dynamicOffsetsData
.
None (Undefined
).
For setBindGroup()
calls that use a Uint32Array
value for dynamicOffsets
, the call will throw with a RangeError
DOMException
if:
dynamicOffsetsStart
is less than 0.dynamicOffsetsStart
+ dynamicOffsetsLength
is greater than dynamicOffsets.length
.The following criteria must be met when calling setBindGroup()
, otherwise a GPUValidationError
is generated and the GPURenderPassEncoder
becomes invalid:
index
is less than or equal to the GPUDevice
's maxBindGroups
limit.dynamicOffsets.length
is the same as the number of entries in bindGroup
with hasDynamicOffset: true
set.bindGroup
entries where the bound buffer
's type
is "uniform"
(see GPUDevice.createBindGroupLayout()
), each number in dynamicOffsets
is a multiple of the GPUDevice
's minUniformBufferOffsetAlignment
limit.bindGroup
entries where the bound buffer
's type
is "storage"
or "read-only-storage"
(see GPUDevice.createBindGroupLayout()
), each number in dynamicOffsets
is a multiple of the GPUDevice
's minStorageBufferOffsetAlignment
limit.bindGroup
entry, the bound buffer
's offset
, plus the corresponding layout entry's minBindingSize
, plus the corresponding dynamic offset specified in dynamicOffsets
, is less than or equal to the bound buffer
's size
.In the WebGPU Samples Textured Cube example, setBindGroup()
is used to bind the uniformBindGroup
to index position 0. Check out the example for the full context.
// â¦
const commandEncoder = device.createCommandEncoder();
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
passEncoder.setPipeline(pipeline);
passEncoder.setBindGroup(0, uniformBindGroup);
passEncoder.setVertexBuffer(0, verticesBuffer);
passEncoder.draw(cubeVertexCount, 1, 0, 0);
passEncoder.end();
device.queue.submit([commandEncoder.finish()]);
// â¦
Note: Study the other WebGPU Samples for more examples of setBindGroup()
usage.
// Set bind group in slot 0
passEncoder.setBindGroup(0, uniformBindGroup);
// Later, unset bind group in slot 0
passEncoder.setBindGroup(0, null);
Specifications Browser compatibility See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4