frameblend.wgsl21 lines · 627 B · raw
1@group(0) @binding(0)
2var texture_0: texture_2d<f32>;
3@group(0) @binding(1)
4var texture_1: texture_2d<f32>;
5
6fn to_texture_position(fragment_position: vec4f) -> vec2u {
7    let texture_position = round(fragment_position.xy - vec2f(0.5));
8    return vec2u(u32(texture_position.x), u32(texture_position.y));
9}
10
11@fragment
12fn fs_main(@builtin(position) position: vec4f) -> @location(0) vec4f {
13    let tex_position = to_texture_position(position);
14
15    let a = textureLoad(texture_0, tex_position, 0).rgb;
16    let b = textureLoad(texture_1, tex_position, 0).rgb;
17
18    let blended = 0.5 * (a + b);
19
20    return vec4f(blended, 1.0);
21}