
# Objective - Update wgpu to 0.13 - ~~Wait, is wgpu 0.13 released? No, but I had most of the changes already ready since playing with webgpu~~ well it has been released now - Also update parking_lot to 0.12 and naga to 0.9 ## Solution - Update syntax for wgsl shaders https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#wgsl-syntax - Add a few options, remove some references: https://github.com/gfx-rs/wgpu/blob/master/CHANGELOG.md#other-breaking-changes - fragment inputs should now exactly match vertex outputs for locations, so I added exports for those to be able to reuse them https://github.com/gfx-rs/wgpu/pull/2704
28 lines
846 B
WebGPU Shading Language
28 lines
846 B
WebGPU Shading Language
#import bevy_pbr::mesh_view_bindings
|
|
|
|
@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 = position.xy / vec2<f32>(view.width, view.height);
|
|
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;
|
|
}
|