mirror of
https://github.com/bevyengine/bevy
synced 2024-12-25 12:33:07 +00:00
39 lines
1.1 KiB
WebGPU Shading Language
39 lines
1.1 KiB
WebGPU Shading Language
|
#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
|
||
|
);
|
||
|
}
|