Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.
1#import bevy_enoki::particle_vertex_out::{ VertexOutput }
3@group(1) @binding(0) var texture: texture_2d<f32>;
4@group(1) @binding(1) var texture_sampler: sampler;
5@group(1) @binding(2) var<uniform> frame_data: vec4<u32>;
8@fragment
9fn fragment(in: VertexOutput) -> @location(0) vec4<f32> {
10 var out = in.color;
12 let max_hframe = f32(frame_data.x);
13 let max_vframe = f32(frame_data.y);
15 let total_frames = max_hframe * max_vframe;
16 let current_frame = floor(in.lifetime_frac * total_frames);
18 let hframe = current_frame % max_hframe;
19 let vframe = floor(current_frame / max_hframe);
21 let frame_width = 1.0 / max_hframe;
22 let frame_height = 1.0 / max_vframe;
24 let u_offset = hframe * frame_width;
25 let v_offset = (max_vframe - vframe - 1.0) * frame_height;
27 let uv = in.uv * vec2<f32>(frame_width, frame_height) + vec2<f32>(u_offset, v_offset);
28 return out * textureSample(texture, texture_sampler, uv);
Contents