pub struct Material { /* private fields */ }Expand description
A material manages shader parameters, textures, and pipeline state.
Implementations§
Source§impl Material
impl Material
Sourcepub fn new(shader: Arc<ShaderModule>, context: Arc<GraphicsContext>) -> Self
pub fn new(shader: Arc<ShaderModule>, context: Arc<GraphicsContext>) -> Self
Create a new material with a shader.
Sourcepub fn from_source(
source: &str,
label: Option<&str>,
context: Arc<GraphicsContext>,
) -> Self
pub fn from_source( source: &str, label: Option<&str>, context: Arc<GraphicsContext>, ) -> Self
Create a material from a shader source string.
Sourcepub fn set_parameter(
&mut self,
name: impl Into<String>,
value: MaterialParameter,
)
pub fn set_parameter( &mut self, name: impl Into<String>, value: MaterialParameter, )
Set a parameter by name.
Sourcepub fn get_parameter(&self, name: &str) -> Option<&MaterialParameter>
pub fn get_parameter(&self, name: &str) -> Option<&MaterialParameter>
Get a parameter by name.
Sourcepub fn set_texture(&mut self, name: impl Into<String>, texture: MaterialTexture)
pub fn set_texture(&mut self, name: impl Into<String>, texture: MaterialTexture)
Set a texture by name.
Sourcepub fn get_texture(&self, name: &str) -> Option<&MaterialTexture>
pub fn get_texture(&self, name: &str) -> Option<&MaterialTexture>
Get a texture by name.
Sourcepub fn set_pipeline_state(&mut self, state: PipelineState)
pub fn set_pipeline_state(&mut self, state: PipelineState)
Set the pipeline state.
Sourcepub fn pipeline_state(&self) -> &PipelineState
pub fn pipeline_state(&self) -> &PipelineState
Get the pipeline state.
Sourcepub fn shader(&self) -> &ShaderModule
pub fn shader(&self) -> &ShaderModule
Get the shader module.
Sourcepub fn bind<'a>(&'a mut self, pass: &mut RenderPass<'a>, bind_group_index: u32)
pub fn bind<'a>(&'a mut self, pass: &mut RenderPass<'a>, bind_group_index: u32)
Bind this material’s resources to a render pass.
This will update GPU resources if needed and set the bind group.
§Arguments
pass- The render pass to bind tobind_group_index- The bind group index (default is usually 0)
Sourcepub fn bind_group_layout(&mut self) -> &BindGroupLayout
pub fn bind_group_layout(&mut self) -> &BindGroupLayout
Get the bind group layout (creates it if needed).
This is useful when creating render pipelines.
Auto Trait Implementations§
impl Freeze for Material
impl !RefUnwindSafe for Material
impl Send for Material
impl Sync for Material
impl Unpin for Material
impl UnsafeUnpin for Material
impl !UnwindSafe for Material
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<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