Render Pass Render Area

The render-pass-render-area feature allows specifying a sub-region of the attachments that the render pass will use. The “render area” defines the rectangle within which rendering operations, including load and store operations, must be performed. Rendering operations may still modify texels outside of the render area.

Additional functionalities:

  • Adds wgpu::RenderPassRenderAreaRect as chained struct for wgpu::RenderPassDescriptor. It defines a rect of {x, y, width, height} to indicate that rendering operations are only performed on the texels within this rect region of the attachments.

Example Usage:

wgpu::RenderPassRenderAreaRect rect;
rect.x = 10;
rect.y = 10;
rect.width = 100;
rect.height = 100;

wgpu::RenderPassDescriptor renderPassDesc = ...;
renderPassDesc.nextInChain = ▭

auto renderPassEncoder = encoder.BeginRenderPass(&renderPassDesc);
// Draw commands here...
renderPassEncoder.End();

Notes:

  • The render area must be contained within the dimensions of the render pass attachments.
  • The render area cannot be empty.
  • Any scissor rect set with wgpu::RenderPassEncoder::SetScissorRect() must be contained by the render area rect specified in wgpu::RenderPassRenderAreaRect.
  • The default scissor rect is the render area.
  • The default viewport is unchanged.
  • The actual render area used by the hardware may be slightly larger than the requested area due to tile alignment or granularity requirements. Dawn handles this alignment internally by expanding the render area to meet the backend's granularity requirements while still encompassing the requested region.