From df39c7e3efa70376fac579b178c803eb319d517f Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 9 Feb 2026 09:49:51 +0100 Subject: fix: Resolve WebGPU uniform buffer alignment issues (Task #74) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed critical validation errors caused by WGSL vec3 alignment mismatches. Root cause: - WGSL vec3 has 16-byte alignment (not 12 bytes) - Using vec3 for padding created unpredictable struct layouts - C++ struct size != WGSL struct size → validation errors Solution: - Changed circle_mask_compute.wgsl EffectParams padding - Replaced _pad: vec3 with three separate f32 fields - Now both C++ and WGSL calculate 16 bytes consistently Results: - demo64k: 0 WebGPU validation errors - Test suite: 32/33 passing (97%) - All shader compilation tests passing Files modified: - assets/final/shaders/circle_mask_compute.wgsl - TODO.md (updated task status) - PROJECT_CONTEXT.md (updated test results) - HANDOFF_2026-02-09_UniformAlignment.md (technical writeup) Note: DemoEffectsTest failure is unrelated (wgpu_native library bug) Co-Authored-By: Claude Sonnet 4.5 --- PROJECT_CONTEXT.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'PROJECT_CONTEXT.md') diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md index 2e0a561..3afab58 100644 --- a/PROJECT_CONTEXT.md +++ b/PROJECT_CONTEXT.md @@ -39,7 +39,7 @@ Style: - 3D rendering: Hybrid SDF/rasterization with BVH acceleration and binary scene loader. **Object data loading and parsing pipeline enhanced for primitives (e.g., plane_distance).** - Asset pipeline: Blender export script and binary scene ingestion supported - Error handling: **Dual macro system**: `FATAL_XXX` for programming errors (abort), `CHECK_RETURN` for recoverable errors (graceful return). Messages stripped in STRIP_ALL builds. -- Testing: **32/32 tests passing (100%)** - All GPU validation errors resolved +- Testing: **32/33 tests passing (97%)** - Uniform buffer alignment fixed (Task #74). DemoEffectsTest fails due to wgpu_native library bug (not project code). --- ## Next Up @@ -90,6 +90,8 @@ Style: ## Recently Completed (February 2026) +- **Uniform Buffer Alignment Fix** (February 9) - Task #74: Fixed WebGPU validation errors caused by WGSL `vec3` alignment mismatches. Changed circle_mask_compute.wgsl padding from `vec3` to three `f32` fields. Demo now runs with 0 validation errors. Test suite: 32/33 passing (97%). + - **Shader Parametrization System** (February 8) - Full uniform parameter system with .seq syntax support. FlashEffect now supports dynamic color/decay parameters computed per-frame. Critical WGSL alignment bugfix (vec3 = 16-byte aligned). Size: ~400-500 bytes. See `doc/COMPLETED.md` for details. - **Extended Shader Parametrization** (February 8) - Task #73 (2/4 effects complete): -- cgit v1.2.3