summaryrefslogtreecommitdiff
path: root/src/effects
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects')
-rw-r--r--src/effects/ntsc.wgsl22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/effects/ntsc.wgsl b/src/effects/ntsc.wgsl
index 31d4e0d..6c9fa37 100644
--- a/src/effects/ntsc.wgsl
+++ b/src/effects/ntsc.wgsl
@@ -3,9 +3,8 @@
#include "render/fullscreen_uv_vs"
#include "math/noise"
-const f32 vignetteRounding = 160.0f;
-const f32 vignetteSmoothness = 0.7f;
-
+const vignetteRounding = 160.0f;
+const vignetteSmoothness = 0.7f;
@group(0) @binding(0) var input_sampler: sampler;
@group(0) @binding(1) var input_texture: texture_2d<f32>;
@@ -13,15 +12,14 @@ const f32 vignetteSmoothness = 0.7f;
// Barrel (fisheye) distortion: strength > 0 = barrel, < 0 = pincushion
fn fisheye(uv: vec2f, strength: f32) -> vec2f {
- let c = uv * 2.0 - 1.0;
- let r2 = c * c;
- return uv * 1.03 * (1.0 + vec2f(.1, .24) * strength * r2);
+ let r2 = uv * uv;
+ return uv * 1.05 * (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);
+fn vignette(uv: vec2f) -> f32 {
+ let uv2 = uv * 1.99;
+ let amount = 1.0 - sqrt(pow(abs(uv2.x), vignetteRounding) + pow(abs(uv2.y), vignetteRounding));
+ let vhard = smoothstep(0., vignetteSmoothness, amount);
return vhard;
}
@@ -29,8 +27,8 @@ fn vignette(vec2f uv) -> f32 {
let t = uniforms.time;
// Fisheye/barrel distortion
- let uv = fisheye(in.uv, 0.18);
- uv = vignette(uv);
+ let uv = (fisheye(in.st, 0.18) + 1.) * .5;
+// uv = vignette(uv);
// Black outside screen edges
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {