summaryrefslogtreecommitdiff
path: root/src/effects/ntsc.wgsl
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-08 09:33:17 +0100
committerskal <pascal.massimino@gmail.com>2026-03-08 09:33:17 +0100
commita2f0f7c7a45ba8b30984fb135b8b54f11fb119f8 (patch)
tree794527d25368227320e5f6aebe409178296db391 /src/effects/ntsc.wgsl
parent9d114ae4fec465baed381de7782ef42ca77e734b (diff)
feat: Implement dual-mode asset loading and update documentation
This commit introduces a dual-mode asset loading system to enhance developer workflow and optimize release builds. Key changes include: - **Dual-Mode Asset Loading:** Assets are now loaded from disk during development (when is OFF) for faster iteration, particularly for heavy assets like and files. For release builds ( ON), all assets are embedded directly into the binary, ensuring a single, self-contained executable. - **Explicit Asset Typing:** Replaced generic asset type with specific types (, , , , ) in and the enum in for clearer categorization and more robust processing. - **Build System Integration:** Modified to pass a flag to in development builds. - **Asset Packer Updates:** now generates file paths for disk-loaded assets and embeds data for others based on the build mode. - **Asset Manager Enhancements:** includes new logic in for loading and caching disk-based assets and updates to for proper memory deallocation. - **Documentation:** Updated to reflect the new asset nomenclature and dual-mode loading strategy. - **Project Rules:** Added a concise rule to mandating top-level documentation updates for medium/large sub-system changes. handoff(Gemini): Implemented dual-mode asset loading and updated documentation.
Diffstat (limited to 'src/effects/ntsc.wgsl')
-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) {