#import bevy_pbr::mesh_view_bindings [[group(1), binding(0)]] var texture: texture_2d; [[group(1), binding(1)]] var our_sampler: sampler; [[stage(fragment)]] fn fragment([[builtin(position)]] position: vec4) -> [[location(0)]] vec4 { // Get screen position with coordinates from 0 to 1 let uv = position.xy / vec2(view.width, view.height); 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; }