diff options
Diffstat (limited to 'src/effects/vignette.wgsl')
| -rw-r--r-- | src/effects/vignette.wgsl | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/effects/vignette.wgsl b/src/effects/vignette.wgsl new file mode 100644 index 0000000..9b98ec9 --- /dev/null +++ b/src/effects/vignette.wgsl @@ -0,0 +1,24 @@ +@group(0) @binding(0) var input_sampler: sampler; +@group(0) @binding(1) var input_tex: texture_2d<f32>; +#include "common_uniforms" + +struct VignetteParams { + radius: f32, + softness: f32, +}; + +@group(0) @binding(2) var<uniform> common_uniforms: CommonUniforms; +@group(0) @binding(3) var<uniform> params: VignetteParams; + +#include "render/fullscreen_vs" + +@fragment +fn fs_main(@builtin(position) pos: vec4f) -> @location(0) vec4f { + let uv = pos.xy / common_uniforms.resolution; + let color = textureSample(input_tex, input_sampler, uv); + + let d = distance(uv, vec2f(0.5, 0.5)); + let vignette = smoothstep(params.radius, params.radius - params.softness, d); + + return vec4f(color.rgb * mix(1.0, vignette, common_uniforms.audio_intensity), color.a); +}
\ No newline at end of file |
