From 72ed90b4da8658260b527fbd41d23bcb55cdd6f5 Mon Sep 17 00:00:00 2001 From: skal Date: Sat, 7 Mar 2026 21:19:30 +0100 Subject: streamline doc --- src/effects/ntsc.wgsl | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/effects') diff --git a/src/effects/ntsc.wgsl b/src/effects/ntsc.wgsl index b333163..31d4e0d 100644 --- a/src/effects/ntsc.wgsl +++ b/src/effects/ntsc.wgsl @@ -3,6 +3,10 @@ #include "render/fullscreen_uv_vs" #include "math/noise" +const f32 vignetteRounding = 160.0f; +const f32 vignetteSmoothness = 0.7f; + + @group(0) @binding(0) var input_sampler: sampler; @group(0) @binding(1) var input_texture: texture_2d; @group(0) @binding(2) var uniforms: UniformsSequenceParams; @@ -13,11 +17,20 @@ fn fisheye(uv: vec2f, strength: f32) -> vec2f { let r2 = c * c; return uv * 1.03 * (1.0 + vec2f(.1, .24) * strength * r2); } + +fn vignette(vec2f uv) -> f32 { + uv *= 1.99; + f32 amount = 1.0 - sqrt(pow(abs(uv.x), vignetteRounding) + pow(abs(uv.y), vignetteRounding)); + f32 vhard = smoothstep(0., vignetteSmoothness, amount); + return vhard; +} + @fragment fn fs_main(in: VertexOutput) -> @location(0) vec4f { let t = uniforms.time; // Fisheye/barrel distortion let uv = fisheye(in.uv, 0.18); + uv = vignette(uv); // Black outside screen edges if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) { -- cgit v1.2.3