summaryrefslogtreecommitdiff
path: root/workspaces/main/shaders/chroma_aberration.wgsl
blob: 02bdb1bcb8e16b7103da81c5ccf4c68418e5c0be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@group(0) @binding(0) var smplr: sampler;
@group(0) @binding(1) var txt: texture_2d<f32>;

#include "common_uniforms"
struct ChromaAberrationParams {
    offset_scale: f32,
    angle: f32,
};

@group(0) @binding(2) var<uniform> uniforms: CommonUniforms;
@group(0) @binding(3) var<uniform> params: ChromaAberrationParams;

#include "render/fullscreen_vs"

@fragment fn fs_main(@builtin(position) p: vec4f) -> @location(0) vec4f {
    let uv = p.xy / uniforms.resolution;

    let amp = params.offset_scale * uniforms.audio_intensity;
    let offset = amp * vec2f(cos(params.angle), sin(params.angle));
    let center = textureSample(txt, smplr, uv);
    let r = textureSample(txt, smplr, uv + offset).r;
    let b = textureSample(txt, smplr, uv - offset).b;
    return vec4f(r, center.g, b, 1.0);
}