| # 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: |
| ```cpp |
| 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. |