From a2f0f7c7a45ba8b30984fb135b8b54f11fb119f8 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 8 Mar 2026 09:33:17 +0100 Subject: 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. --- src/effects/ntsc.wgsl | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'src/effects') 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; @@ -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) { -- cgit v1.2.3