mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 22:18:33 +00:00
# Objective Fixes #6952 ## Solution - Request WGPU capabilities `SAMPLED_TEXTURE_AND_STORAGE_BUFFER_ARRAY_NON_UNIFORM_INDEXING`, `SAMPLER_NON_UNIFORM_INDEXING` and `UNIFORM_BUFFER_AND_STORAGE_TEXTURE_ARRAY_NON_UNIFORM_INDEXING` when corresponding features are enabled. - Add an example (`shaders/texture_binding_array`) illustrating (and testing) the use of non-uniform indexed textures and samplers. ![image](https://user-images.githubusercontent.com/16053640/209448310-defa4eae-6bcb-460d-9b3d-a3d2fad4316c.png) ## Changelog - Added new capabilities for shader validation. - Added example `shaders/texture_binding_array`.
15 lines
522 B
WebGPU Shading Language
15 lines
522 B
WebGPU Shading Language
@group(1) @binding(0)
|
|
var textures: binding_array<texture_2d<f32>>;
|
|
@group(1) @binding(1)
|
|
var samplers: binding_array<sampler>;
|
|
|
|
@fragment
|
|
fn fragment(
|
|
#import bevy_pbr::mesh_vertex_output
|
|
) -> @location(0) vec4<f32> {
|
|
// Select the texture to sample from using non-uniform uv coordinates
|
|
let coords = clamp(vec2<u32>(uv * 4.0), vec2<u32>(0u), vec2<u32>(3u));
|
|
let index = coords.y * 4u + coords.x;
|
|
let inner_uv = fract(uv * 4.0);
|
|
return textureSample(textures[index], samplers[index], inner_uv);
|
|
}
|