Skip to main content

MeshRenderer

Struct MeshRenderer 

Source
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: RenderPipeline

Single-sample PBR pipeline used for screenshot capture (no MSAA)

§screenshot_flat_pipeline: RenderPipeline

Single-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>

Source

pub async fn new( window: &'window Window, config: MeshRenderConfig, ) -> Result<Self>

Create new mesh renderer with PBR and flat shading support

Source

pub fn update_camera( &mut self, view_matrix: Matrix4<f32>, proj_matrix: Matrix4<f32>, camera_pos: Vector3<f32>, )

Update camera matrices and position

Source

pub fn update_lighting(&mut self, params: MeshLightingParams)

Update lighting parameters

Source

pub fn resize(&mut self, new_size: PhysicalSize<u32>)

Resize renderer

Source

pub fn create_vertex_buffer(&self, vertices: &[MeshVertex]) -> Buffer

Create vertex buffer

Source

pub fn create_index_buffer(&self, indices: &[u32]) -> Buffer

Create index buffer

Source

pub fn create_depth_texture(&self) -> Texture

Create depth texture

Source

pub fn render(&self, mesh: &GpuMesh, shading_mode: ShadingMode) -> Result<()>

Render mesh with specified shading mode

Source

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> 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
Source§

impl<T> Downcast for T
where T: Any,

Source§

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>

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)

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)

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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

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

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

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

Source§

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

Source§

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,