bevy/assets/shaders/custom_material_chromatic_aberration.wgsl
Robert Swain 8b7ebe1738 Fix post_processing and shader_prepass examples (#7419)
# Objective

- Fix `post_processing` and `shader_prepass` examples as they fail when compiling shaders due to missing shader defs
- Fixes #6799
- Fixes #6996
- Fixes #7375 
- Supercedes #6997
- Supercedes #7380 

## Solution

- The prepass was broken due to a missing `MAX_CASCADES_PER_LIGHT` shader def. Add it.
- The shader used in the `post_processing` example is applied to a 2D mesh, so use the correct mesh2d_view_bindings shader import.
2023-01-30 22:53:08 +00:00

28 lines
872 B
WebGPU Shading Language

#import bevy_sprite::mesh2d_view_bindings
#import bevy_pbr::utils
@group(1) @binding(0)
var texture: texture_2d<f32>;
@group(1) @binding(1)
var our_sampler: sampler;
@fragment
fn fragment(
@builtin(position) position: vec4<f32>,
#import bevy_sprite::mesh2d_vertex_output
) -> @location(0) vec4<f32> {
// 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<f32>(
textureSample(texture, our_sampler, uv + vec2<f32>(offset_strength, -offset_strength)).r,
textureSample(texture, our_sampler, uv + vec2<f32>(-offset_strength, 0.0)).g,
textureSample(texture, our_sampler, uv + vec2<f32>(0.0, offset_strength)).b,
1.0
);
return output_color;
}