Trait Material

Source
pub trait Material: Asset + RenderAsset {
    // Required methods
    fn bind_group(material: &Self::PreparedAsset) -> &BindGroup;
    fn bind_group_layout(render_device: &RenderDevice) -> BindGroupLayout;

    // Provided methods
    fn vertex_shader(asset_server: &AssetServer) -> Option<Handle<Shader>> { ... }
    fn fragment_shader(asset_server: &AssetServer) -> Option<Handle<Shader>> { ... }
    fn alpha_mode(material: &Self::PreparedAsset) -> AlphaMode { ... }
    fn dynamic_uniform_indices(material: &Self::PreparedAsset) -> &[u32] { ... }
}
Expand description

Materials are used alongside MaterialPlugin and MaterialMeshBundle to spawn entities that are rendered with a specific Material type. They serve as an easy to use high level way to render Mesh entities with custom shader logic. For materials that can specialize their RenderPipelineDescriptor based on specific material values, see SpecializedMaterial. Material automatically implements SpecializedMaterial and can be used anywhere that type is used (such as MaterialPlugin).

Required Methods§

Source

fn bind_group(material: &Self::PreparedAsset) -> &BindGroup

Returns this material’s BindGroup. This should match the layout returned by Material::bind_group_layout.

Source

fn bind_group_layout(render_device: &RenderDevice) -> BindGroupLayout

Returns this material’s BindGroupLayout. This should match the BindGroup returned by Material::bind_group.

Provided Methods§

Source

fn vertex_shader(asset_server: &AssetServer) -> Option<Handle<Shader>>

Returns this material’s vertex shader. If None is returned, the default mesh vertex shader will be used. Defaults to None.

Source

fn fragment_shader(asset_server: &AssetServer) -> Option<Handle<Shader>>

Returns this material’s fragment shader. If None is returned, the default mesh fragment shader will be used. Defaults to None.

Source

fn alpha_mode(material: &Self::PreparedAsset) -> AlphaMode

Returns this material’s AlphaMode. Defaults to AlphaMode::Opaque.

Source

fn dynamic_uniform_indices(material: &Self::PreparedAsset) -> &[u32]

The dynamic uniform indices to set for the given material’s BindGroup. Defaults to an empty array / no dynamic uniform indices.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§