logo
pub struct RenderPass { /* private fields */ }
Expand description

An object representing the discrete steps in which rendering is done.

A render pass in Vulkan is made up of three parts:

  • A list of attachments, which are image views that are inputs, outputs or intermediate stages in the rendering process.
  • One or more subpasses, which are the steps in which the rendering process, takes place, and the attachments that are used for each step.
  • Dependencies, which describe how the input and output data of each subpass is to be passed from one subpass to the next.
use vulkano::render_pass::{RenderPass, RenderPassCreateInfo, SubpassDescription};

let render_pass = RenderPass::new(
    device.clone(),
    RenderPassCreateInfo {
        subpasses: vec![SubpassDescription::default()],
        ..Default::default()
    },
).unwrap();

This example creates a render pass with no attachment and one single subpass that doesn’t draw on anything. While it’s sometimes useful, most of the time it’s not what you want.

The easiest way to create a “real” render pass is to use the single_pass_renderpass! macro.

use vulkano::format::Format;

let render_pass = single_pass_renderpass!(device.clone(),
    attachments: {
        // `foo` is a custom name we give to the first and only attachment.
        foo: {
            load: Clear,
            store: Store,
            format: Format::R8G8B8A8_UNORM,
            samples: 1,
        }
    },
    pass: {
        color: [foo],       // Repeat the attachment name here.
        depth_stencil: {}
    }
).unwrap();

See the documentation of the macro for more details. TODO: put link here

Implementations

Creates a new RenderPass.

Panics
  • Panics if create_info.subpasses is empty.
  • Panics if any element of create_info.attachments has a format of None.

Builds a render pass with one subpass and no attachment.

This method is useful for quick tests.

Returns the attachments of the render pass.

Returns the subpasses of the render pass.

Returns the dependencies of the render pass.

Returns the correlated view masks of the render pass.

If the render pass has multiview enabled, returns the number of views used by the render pass. Returns 0 if multiview is not enabled.

Returns the granularity of this render pass.

If the render area of a render pass in a command buffer is a multiple of this granularity, then the performance will be optimal. Performances are always optimal for render areas that cover the whole framebuffer.

Returns the first subpass of the render pass.

Returns true if this render pass is compatible with the other render pass, as defined in the Render Pass Compatibility section of the Vulkan specs.

Returns true if the subpass of this description is compatible with the shader’s fragment output definition.

Decodes I into a list of clear values where each element corresponds to an attachment. The size of the returned iterator must be the same as the number of attachments.

When the user enters a render pass, they need to pass a list of clear values to apply to the attachments of the framebuffer. This method is then responsible for checking the correctness of these values and turning them into a list that can be processed by vulkano.

The format of the clear value must match the format of the attachment. Attachments that are not loaded with LoadOp::Clear must have an entry equal to ClearValue::None.

Trait Implementations

Formats the value using the given formatter. Read more

Returns the device that owns Self.

Executes the destructor for this type. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

The type of the object.

Returns a reference to the object.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.