#import bevy_pbr::forward_io::VertexOutput #import bevy_pbr::mesh_bindings::mesh struct Color { base_color: vec4<f32>, } #ifdef BINDLESS @group(2) @binding(0) var<storage> material_color: binding_array<Color, 4>; @group(2) @binding(1) var material_color_texture: binding_array<texture_2d<f32>, 4>; @group(2) @binding(2) var material_color_sampler: binding_array<sampler, 4>; #else // BINDLESS @group(2) @binding(0) var<uniform> material_color: Color; @group(2) @binding(1) var material_color_texture: texture_2d<f32>; @group(2) @binding(2) var material_color_sampler: sampler; #endif // BINDLESS @fragment fn fragment(in: VertexOutput) -> @location(0) vec4<f32> { #ifdef BINDLESS let slot = mesh[in.instance_index].material_bind_group_slot; let base_color = material_color[slot].base_color; #else // BINDLESS let base_color = material_color.base_color; #endif // BINDLESS return base_color * textureSampleLevel( #ifdef BINDLESS material_color_texture[slot], material_color_sampler[slot], #else // BINDLESS material_color_texture, material_color_sampler, #endif // BINDLESS in.uv, 0.0 ); }