#import bevy_pbr::mesh_view_bindings #import bevy_pbr::utils @group(1) @binding(0) var texture: texture_2d; @group(1) @binding(1) var our_sampler: sampler; @fragment fn fragment( @builtin(position) position: vec4, #import bevy_sprite::mesh2d_vertex_output ) -> @location(0) vec4 { // Get screen position with coordinates from 0 to 1 let uv = coords_to_viewport_uv(position.xy, view.viewport); let offset_strength = 0.02; // Sample each color channel with an arbitrary shift var output_color = vec4( textureSample(texture, our_sampler, uv + vec2(offset_strength, -offset_strength)).r, textureSample(texture, our_sampler, uv + vec2(-offset_strength, 0.0)).g, textureSample(texture, our_sampler, uv + vec2(0.0, offset_strength)).b, 1.0 ); return output_color; }