diff options
| author | skal <pascal.massimino@gmail.com> | 2026-03-07 21:19:30 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-03-07 21:19:30 +0100 |
| commit | 72ed90b4da8658260b527fbd41d23bcb55cdd6f5 (patch) | |
| tree | 683cc9a6015e8290b127793c6faa030bb56b6019 /src/effects/ntsc.wgsl | |
| parent | 22d46b3bb47fa175e5227e27e1e7273805e2094e (diff) | |
streamline doc
Diffstat (limited to 'src/effects/ntsc.wgsl')
| -rw-r--r-- | src/effects/ntsc.wgsl | 13 |
1 files changed, 13 insertions, 0 deletions
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<f32>; @group(0) @binding(2) var<uniform> 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) { |
