nightshade 0.37.0

A cross-platform data-oriented game engine.
Documentation
use super::super::super::material_gpu;
use super::MeshPass;

impl MeshPass {
    pub fn apply_material_textures(
        &mut self,
        device: &wgpu::Device,
        arrays: &crate::render::wgpu::material_texture_arrays::MaterialTextureArrays,
    ) {
        if self.material_bindless_max.is_some() && arrays.is_bindless() {
            let views = arrays.bindless_view_refs();
            self.material_bind_group = Some(material_gpu::bindless_material_bind_group(
                device,
                &self.texture_bind_group_layout,
                &views,
                arrays.sampler(),
                "Mesh Material Bindless Bind Group",
            ));
            return;
        }

        self.material_array_srgb_view = Some(arrays.srgb_view().clone());
        self.material_array_linear_view = Some(arrays.linear_view().clone());
        self.material_array_sampler = Some(arrays.sampler().clone());
        self.material_bind_group = material_gpu::rebuild_array_material_bind_group(
            device,
            &self.texture_bind_group_layout,
            self.material_array_srgb_view.as_ref(),
            self.material_array_linear_view.as_ref(),
            self.material_array_sampler.as_ref(),
            "Mesh Material Texture Bind Group",
        );
    }
}