summaryrefslogtreecommitdiff
path: root/workspaces/main/shaders/chroma_aberration.wgsl
blob: d5e50ea395c890fbe0e61b5f2eb5cc3132af9d56 (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: vec4<f32>) -> @location(0) vec4<f32> {
    let uv = p.xy / uniforms.resolution;

    let amp = params.offset_scale * uniforms.audio_intensity;
    let offset = amp * vec2<f32>(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 vec4<f32>(r, center.g, b, 1.0);
}