summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/effects/ntsc.wgsl13
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) {