The beginOcclusionQuery()
method of the GPURenderPassEncoder
interface begins an occlusion query at the specified index of the relevant GPUQuerySet
(provided as the value of the occlusionQuerySet
descriptor property when invoking GPUCommandEncoder.beginRenderPass()
to run the render pass).
beginOcclusionQuery(queryIndex)
The following criteria must be met when calling beginOcclusionQuery()
, otherwise a GPUValidationError
is generated and the GPURenderPassEncoder
becomes invalid:
- A
GPUQuerySet
was specified in the occlusionQuerySet
descriptor property when invoking the originating GPUCommandEncoder.beginRenderPass()
. -
queryIndex
is smaller than GPUQuerySet.count
. - The
queryIndex
has not already been written to in the same render pass. - An occlusion query is not already active for this render pass (i.e. via a previous
beginOcclusionQuery()
call).
const querySet = device.createQuerySet({
type: "occlusion",
count: 32,
});
const renderPassDescriptor = {
colorAttachments: [
{
clearValue: clearColor,
loadOp: "clear",
storeOp: "store",
view: context.getCurrentTexture().createView(),
},
],
occlusionQuerySet: querySet,
};
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
passEncoder.beginOcclusionQuery(0);
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);
passEncoder.endOcclusionQuery();