pub struct MeshRenderer<'window> {Show 15 fields
pub gpu_context: GpuContext,
pub surface: Surface<'window>,
pub surface_config: SurfaceConfiguration,
pub pbr_pipeline: RenderPipeline,
pub flat_pipeline: RenderPipeline,
pub screenshot_pbr_pipeline: RenderPipeline,
pub screenshot_flat_pipeline: RenderPipeline,
pub camera_uniform: MeshCameraUniform,
pub camera_buffer: Buffer,
pub lighting_params: MeshLightingParams,
pub lighting_buffer: Buffer,
pub bind_group_layout: BindGroupLayout,
pub config: MeshRenderConfig,
pub msaa_texture: Option<Texture>,
pub msaa_view: Option<TextureView>,
}Expand description
GPU-accelerated mesh renderer with PBR and flat shading
Fields§
§gpu_context: GpuContext§surface: Surface<'window>§surface_config: SurfaceConfiguration§pbr_pipeline: RenderPipeline§flat_pipeline: RenderPipeline§screenshot_pbr_pipeline: RenderPipelineSingle-sample PBR pipeline used for screenshot capture (no MSAA)
screenshot_flat_pipeline: RenderPipelineSingle-sample flat pipeline used for screenshot capture (no MSAA)
camera_uniform: MeshCameraUniform§camera_buffer: Buffer§lighting_params: MeshLightingParams§lighting_buffer: Buffer§bind_group_layout: BindGroupLayout§config: MeshRenderConfig§msaa_texture: Option<Texture>§msaa_view: Option<TextureView>Implementations§
Source§impl<'window> MeshRenderer<'window>
impl<'window> MeshRenderer<'window>
Sourcepub async fn new(
window: &'window Window,
config: MeshRenderConfig,
) -> Result<Self>
pub async fn new( window: &'window Window, config: MeshRenderConfig, ) -> Result<Self>
Create new mesh renderer with PBR and flat shading support
Sourcepub fn update_camera(
&mut self,
view_matrix: Matrix4<f32>,
proj_matrix: Matrix4<f32>,
camera_pos: Vector3<f32>,
)
pub fn update_camera( &mut self, view_matrix: Matrix4<f32>, proj_matrix: Matrix4<f32>, camera_pos: Vector3<f32>, )
Update camera matrices and position
Sourcepub fn update_lighting(&mut self, params: MeshLightingParams)
pub fn update_lighting(&mut self, params: MeshLightingParams)
Update lighting parameters
Sourcepub fn resize(&mut self, new_size: PhysicalSize<u32>)
pub fn resize(&mut self, new_size: PhysicalSize<u32>)
Resize renderer
Sourcepub fn create_vertex_buffer(&self, vertices: &[MeshVertex]) -> Buffer
pub fn create_vertex_buffer(&self, vertices: &[MeshVertex]) -> Buffer
Create vertex buffer
Sourcepub fn create_index_buffer(&self, indices: &[u32]) -> Buffer
pub fn create_index_buffer(&self, indices: &[u32]) -> Buffer
Create index buffer
Sourcepub fn create_depth_texture(&self) -> Texture
pub fn create_depth_texture(&self) -> Texture
Create depth texture
Sourcepub fn render(&self, mesh: &GpuMesh, shading_mode: ShadingMode) -> Result<()>
pub fn render(&self, mesh: &GpuMesh, shading_mode: ShadingMode) -> Result<()>
Render mesh with specified shading mode
Sourcepub fn render_to_texture(
&self,
mesh: &GpuMesh,
shading_mode: ShadingMode,
) -> Result<(Vec<u8>, TextureFormat, u32, u32)>
pub fn render_to_texture( &self, mesh: &GpuMesh, shading_mode: ShadingMode, ) -> Result<(Vec<u8>, TextureFormat, u32, u32)>
Render mesh to an offscreen texture and return raw RGBA pixel bytes.
Returns (pixels, format, width, height). The caller is responsible
for interpreting the format (BGRA vs RGBA) when encoding the image.
Auto Trait Implementations§
impl<'window> !Freeze for MeshRenderer<'window>
impl<'window> !RefUnwindSafe for MeshRenderer<'window>
impl<'window> Send for MeshRenderer<'window>
impl<'window> Sync for MeshRenderer<'window>
impl<'window> Unpin for MeshRenderer<'window>
impl<'window> UnsafeUnpin for MeshRenderer<'window>
impl<'window> !UnwindSafe for MeshRenderer<'window>
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.