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();