use crate::{ pipeline::{PipelineDescriptor, BindGroupDescriptorId}, render_resource::{RenderResourceId, RenderResourceSetId}, renderer::RenderContext, }; use bevy_asset::Handle; use std::ops::Range; pub trait RenderPass { fn get_render_context(&self) -> &dyn RenderContext; fn set_index_buffer(&mut self, resource: RenderResourceId, offset: u64); fn set_vertex_buffer(&mut self, start_slot: u32, resource: RenderResourceId, offset: u64); fn set_pipeline(&mut self, pipeline_handle: Handle); fn set_viewport(&mut self, x: f32, y: f32, w: f32, h: f32, min_depth: f32, max_depth: f32); fn set_stencil_reference(&mut self, reference: u32); fn draw(&mut self, vertices: Range, instances: Range); fn draw_indexed(&mut self, indices: Range, base_vertex: i32, instances: Range); fn set_bind_group( &mut self, index: u32, bind_group_descriptor: BindGroupDescriptorId, render_resource_set: RenderResourceSetId, dynamic_uniform_indices: Option<&[u32]>, ); }