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
impl RenderPass
Sourcefn new(parent: Arc<CommandEncoder>, desc: ArcRenderPassDescriptor<'_>) -> Self
fn new(parent: Arc<CommandEncoder>, desc: ArcRenderPassDescriptor<'_>) -> Self
If the parent command encoder is invalid, the returned pass will be invalid.
fn new_invalid( parent: Arc<CommandEncoder>, label: &Label<'_>, err: RenderPassError, ) -> Self
pub fn label(&self) -> Option<&str>
Source§impl RenderPass
impl RenderPass
pub fn end(&mut self) -> Result<(), EncoderStateError>
Source§impl RenderPass
impl RenderPass
pub fn set_bind_group( &mut self, index: u32, bind_group: Option<Arc<BindGroup>>, offsets: &[DynamicOffset], ) -> Result<(), PassStateError>
pub fn set_pipeline( &mut self, pipeline: Arc<RenderPipeline>, ) -> Result<(), PassStateError>
pub fn set_index_buffer( &mut self, buffer: Arc<Buffer>, index_format: IndexFormat, offset: BufferAddress, size: Option<BufferSize>, ) -> Result<(), PassStateError>
pub fn set_vertex_buffer( &mut self, slot: u32, buffer: Option<Arc<Buffer>>, offset: BufferAddress, size: Option<BufferSize>, ) -> Result<(), PassStateError>
pub fn set_blend_constant(&mut self, color: Color) -> Result<(), PassStateError>
pub fn set_stencil_reference( &mut self, value: u32, ) -> Result<(), PassStateError>
pub fn set_viewport( &mut self, x: f32, y: f32, w: f32, h: f32, depth_min: f32, depth_max: f32, ) -> Result<(), PassStateError>
pub fn set_scissor_rect( &mut self, x: u32, y: u32, w: u32, h: u32, ) -> Result<(), PassStateError>
pub fn set_immediates( &mut self, offset: u32, data: &[u8], ) -> Result<(), PassStateError>
pub fn draw( &mut self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32, ) -> Result<(), PassStateError>
pub fn draw_indexed( &mut self, index_count: u32, instance_count: u32, first_index: u32, base_vertex: i32, first_instance: u32, ) -> Result<(), PassStateError>
pub fn draw_mesh_tasks( &mut self, group_count_x: u32, group_count_y: u32, group_count_z: u32, ) -> Result<(), RenderPassError>
pub fn draw_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, ) -> Result<(), PassStateError>
pub fn draw_indexed_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, ) -> Result<(), PassStateError>
pub fn draw_mesh_tasks_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, ) -> Result<(), RenderPassError>
pub fn multi_draw_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count: u32, ) -> Result<(), PassStateError>
pub fn multi_draw_indexed_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count: u32, ) -> Result<(), PassStateError>
pub fn multi_draw_mesh_tasks_indirect( &mut self, buffer: Arc<Buffer>, offset: BufferAddress, count: u32, ) -> Result<(), RenderPassError>
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>
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>
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>
pub fn push_debug_group( &mut self, label: &str, color: u32, ) -> Result<(), PassStateError>
pub fn pop_debug_group(&mut self) -> Result<(), PassStateError>
pub fn insert_debug_marker( &mut self, label: &str, color: u32, ) -> Result<(), PassStateError>
pub fn write_timestamp( &mut self, query_set: Arc<QuerySet>, query_index: u32, ) -> Result<(), PassStateError>
pub fn begin_occlusion_query( &mut self, query_index: u32, ) -> Result<(), PassStateError>
pub fn end_occlusion_query(&mut self) -> Result<(), PassStateError>
pub fn begin_pipeline_statistics_query( &mut self, query_set: Arc<QuerySet>, query_index: u32, ) -> Result<(), PassStateError>
pub fn end_pipeline_statistics_query(&mut self) -> Result<(), PassStateError>
pub fn execute_bundles( &mut self, render_bundles: &[Arc<RenderBundle>], ) -> Result<(), PassStateError>
Trait Implementations§
Source§impl Debug for RenderPass
impl Debug for RenderPass
Source§impl ResourceType for RenderPass
impl ResourceType for RenderPass
Auto Trait Implementations§
impl Freeze for RenderPass
impl !RefUnwindSafe for RenderPass
impl Send for RenderPass
impl Sync for RenderPass
impl Unpin for RenderPass
impl !UnwindSafe for RenderPass
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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