RenderPass

Struct RenderPass 

Source
pub struct RenderPass {
    base: BasePass<ArcRenderCommand, RenderPassError>,
    parent: Option<Arc<CommandEncoder>>,
    color_attachments: ArrayVec<Option<ArcRenderPassColorAttachment>, { hal::MAX_COLOR_ATTACHMENTS }>,
    depth_stencil_attachment: Option<ResolvedRenderPassDepthStencilAttachment<Arc<TextureView>>>,
    timestamp_writes: Option<PassTimestampWrites<Arc<QuerySet>>>,
    occlusion_query_set: Option<Arc<QuerySet>>,
    multiview_mask: Option<NonZeroU32>,
    current_bind_groups: BindGroupStateChange<Arc<BindGroup>>,
    current_pipeline: StateChange<Arc<RenderPipeline>>,
}
Expand description

A pass’s encoder state and its validity are two distinct conditions, i.e., the full matrix of (open, ended) x (valid, invalid) is possible.

The presence or absence of the parent Option indicates the pass’s state. The presence or absence of an error in base.error indicates the pass’s validity.

Fields§

§base: BasePass<ArcRenderCommand, RenderPassError>

All pass data & records is stored here.

§parent: Option<Arc<CommandEncoder>>

Parent command encoder that this pass records commands into.

If this is Some, then the pass is in WebGPU’s “open” state. If it is None, then the pass is in the “ended” state. See https://www.w3.org/TR/webgpu/#encoder-state

§color_attachments: ArrayVec<Option<ArcRenderPassColorAttachment>, { hal::MAX_COLOR_ATTACHMENTS }>§depth_stencil_attachment: Option<ResolvedRenderPassDepthStencilAttachment<Arc<TextureView>>>§timestamp_writes: Option<PassTimestampWrites<Arc<QuerySet>>>§occlusion_query_set: Option<Arc<QuerySet>>§multiview_mask: Option<NonZeroU32>§current_bind_groups: BindGroupStateChange<Arc<BindGroup>>§current_pipeline: StateChange<Arc<RenderPipeline>>

Implementations§

Source§

impl RenderPass

Source

fn new(parent: Arc<CommandEncoder>, desc: ArcRenderPassDescriptor<'_>) -> Self

If the parent command encoder is invalid, the returned pass will be invalid.

Source

fn new_invalid( parent: Arc<CommandEncoder>, label: &Label<'_>, err: RenderPassError, ) -> Self

Source

pub fn label(&self) -> Option<&str>

Source§

impl RenderPass

Source

pub fn end(&mut self) -> Result<(), EncoderStateError>

Source§

impl RenderPass

Source

pub fn set_bind_group( &mut self, index: u32, bind_group: Option<Arc<BindGroup>>, offsets: &[DynamicOffset], ) -> Result<(), PassStateError>

Source

pub fn set_pipeline( &mut self, pipeline: Arc<RenderPipeline>, ) -> Result<(), PassStateError>

Source

pub fn set_index_buffer( &mut self, buffer: Arc<Buffer>, index_format: IndexFormat, offset: BufferAddress, size: Option<BufferSize>, ) -> Result<(), PassStateError>

Source

pub fn set_vertex_buffer( &mut self, slot: u32, buffer: Option<Arc<Buffer>>, offset: BufferAddress, size: Option<BufferSize>, ) -> Result<(), PassStateError>

Source

pub fn set_blend_constant(&mut self, color: Color) -> Result<(), PassStateError>

Source

pub fn set_stencil_reference( &mut self, value: u32, ) -> Result<(), PassStateError>

Source

pub fn set_viewport( &mut self, x: f32, y: f32, w: f32, h: f32, depth_min: f32, depth_max: f32, ) -> Result<(), PassStateError>

Source

pub fn set_scissor_rect( &mut self, x: u32, y: u32, w: u32, h: u32, ) -> Result<(), PassStateError>

Source

pub fn set_immediates( &mut self, offset: u32, data: &[u8], ) -> Result<(), PassStateError>

Source

pub fn draw( &mut self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32, ) -> Result<(), PassStateError>

Source

pub fn draw_indexed( &mut self, index_count: u32, instance_count: u32, first_index: u32, base_vertex: i32, first_instance: u32, ) -> Result<(), PassStateError>

Source

pub fn draw_mesh_tasks( &mut self, group_count_x: u32, group_count_y: u32, group_count_z: u32, ) -> Result<(), RenderPassError>

Source

pub fn draw_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, ) -> Result<(), PassStateError>

Source

pub fn draw_indexed_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, ) -> Result<(), PassStateError>

Source

pub fn draw_mesh_tasks_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, ) -> Result<(), RenderPassError>

Source

pub fn multi_draw_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count: u32, ) -> Result<(), PassStateError>

Source

pub fn multi_draw_indexed_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count: u32, ) -> Result<(), PassStateError>

Source

pub fn multi_draw_mesh_tasks_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count: u32, ) -> Result<(), RenderPassError>

Source

pub fn multi_draw_indirect_count( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count_buffer: Arc<Buffer>, count_buffer_offset: BufferAddress, max_count: u32, ) -> Result<(), PassStateError>

Source

pub fn multi_draw_indexed_indirect_count( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count_buffer: Arc<Buffer>, count_buffer_offset: BufferAddress, max_count: u32, ) -> Result<(), PassStateError>

Source

pub fn multi_draw_mesh_tasks_indirect_count( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count_buffer: Arc<Buffer>, count_buffer_offset: BufferAddress, max_count: u32, ) -> Result<(), RenderPassError>

Source

pub fn push_debug_group( &mut self, label: &str, color: u32, ) -> Result<(), PassStateError>

Source

pub fn pop_debug_group(&mut self) -> Result<(), PassStateError>

Source

pub fn insert_debug_marker( &mut self, label: &str, color: u32, ) -> Result<(), PassStateError>

Source

pub fn write_timestamp( &mut self, query_set: Arc<QuerySet>, query_index: u32, ) -> Result<(), PassStateError>

Source

pub fn begin_occlusion_query( &mut self, query_index: u32, ) -> Result<(), PassStateError>

Source

pub fn end_occlusion_query(&mut self) -> Result<(), PassStateError>

Source

pub fn begin_pipeline_statistics_query( &mut self, query_set: Arc<QuerySet>, query_index: u32, ) -> Result<(), PassStateError>

Source

pub fn end_pipeline_statistics_query(&mut self) -> Result<(), PassStateError>

Source

pub fn execute_bundles( &mut self, render_bundles: &[Arc<RenderBundle>], ) -> Result<(), PassStateError>

Trait Implementations§

Source§

impl Debug for RenderPass

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ResourceType for RenderPass

Source§

const TYPE: &'static str = "RenderPass"

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,