Skip to main content

MaterialManager

Struct MaterialManager 

Source
pub struct MaterialManager {
    pub max_frames_not_used: usize,
    /* private fields */
}
Expand description

Manages compiled GPU materials (shaders), caching them by fragment source.

Equivalent to TextureManager but for materials. The renderer creates and uses this to avoid recompiling shaders every frame.

Also holds a runtime shader storage (name → source) for [ShaderAsset::Stored] shaders. Update stored sources with set_source; the old compiled material is evicted automatically when the source changes.

Fields§

§max_frames_not_used: usize

How many frames a material can go unused before being evicted.

Implementations§

Source§

impl MaterialManager

Source

pub fn new() -> Self

Source

pub fn get_or_create(&mut self, config: &ShaderConfig) -> &Material

Get or create a material for the given shader config. The material is cached by fragment source string.

Source

pub fn clean(&mut self)

Evict materials that haven’t been used recently.

Source

pub fn set_source(&mut self, name: &str, fragment: &str)

Store or update a named shader source.

If the source changed compared to the previously stored value, the old compiled material is evicted from the cache so the next render pass recompiles automatically. No-ops if the source is unchanged.

Source

pub fn get_source(&self, name: &str) -> Option<&str>

Look up a stored shader source by name.

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