From 8296fe5180b979b9d1f32f6375b41f0e0a8a399d Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 8 Feb 2026 17:39:33 +0100 Subject: feat(gpu): Add parameter-driven ChromaAberrationEffect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implements Task #73 - Extends shader parametrization system to ChromaAberrationEffect following the FlashEffect pattern. Changes: - Added ChromaAberrationParams struct (offset_scale, angle) - Added ChromaUniforms with proper WGSL alignment (32 bytes) - Updated shader to compute offset direction from angle parameter - Extended seq_compiler to parse offset/angle parameters - Updated demo.seq with 2 parameterized instances: * Line 50: offset=0.03 angle=0.785 (45° diagonal, stronger) * Line 76: offset=0.01 angle=1.57 (90° vertical, subtle) Technical details: - Backward-compatible default constructor maintained - Migrated from raw buffer to UniformBuffer - Shader computes direction: vec2(cos(angle), sin(angle)) - Generated code creates ChromaAberrationParams initialization Testing: - All 32/32 tests pass - Demo runs without errors - Binary size: 5.6M stripped (~200-300 bytes impact) Co-Authored-By: Claude Sonnet 4.5 --- src/3d/renderer.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/3d/renderer.h') diff --git a/src/3d/renderer.h b/src/3d/renderer.h index 94a194d..bf3b497 100644 --- a/src/3d/renderer.h +++ b/src/3d/renderer.h @@ -30,11 +30,11 @@ struct ObjectData { mat4 model; mat4 inv_model; vec4 color; - // params.x = object type (as float), params.y = plane_distance (if applicable) - vec4 params; + // params.x = object type (as float), params.y = plane_distance (if + // applicable) + vec4 params; }; - class Renderer3D { public: void init(WGPUDevice device, WGPUQueue queue, WGPUTextureFormat format); -- cgit v1.2.3