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>; 9fn fragment(in: VertexOutput) -> @location(0) vec4<f32> { 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);