Back to Devlog
    v0.9.12
    RendererApril 14, 2026Release notes

    The Deluxe Pipeline, Nine Months Waiting

    Warsow's if deluxe / if ! deluxe blocks finally parsed correctly, a cinematic camera with Bezier paths, and protocol codec tests that pin every byte.

    Closing A Caveat From v0.8.5

    In January this project wrote down, in its own Known Limitations:

    text
    if ! deluxe / if deluxe blocks are not parsed correctly.
    All stages from all blocks are merged

    Nine months later: Q3ShaderParser and Q3ShaderTypes preserve Warsow/QFusion `material` payloads with their `if deluxe` / `if ! deluxe` branches intact, and resolveMaterialProps() is deluxe-aware and caches by deluxe mode.

    The rest of the pipeline followed:

    • Classic $lightmap is no longer misclassified as multiply-transparent.
    • BspMeshBuilder prefers deluxe metadata over suffix guessing, falling back

    to _norm/_normal/_bump/_gloss/_spec only when absent.

    • Glow and emissive survive the lightmap pass.
    • Warsow _gloss → microSurfaceTexture with metallic = 0.
    • Lightmap index 0 handled correctly.

    Two cvars, both default-on and both reload-only: r_deluxe and r_bsp_pbr.

    Highlights, Automatically

    DemoAnalyzer scores frags, multi-kills, airborne kills, first blood and high speed. SequenceBuilder makes timed cuts with padding, de-duplication and a budget. CinematicCameraPaths builds Bezier spline paths with tracking and easing. demoplay cinematic is wired to CameraSystem.

    And The Byte-Pinning Tests

    text
    988 tests across 52 files (up from 838)
    ProtocolCodecs.test.ts   73 tests

    MessageCodec round-trips, MessageType bytes 0x01-0x0F and 0x81-0x8F, all 12 event codepoints, and the full delta-flag matrix 0x01 0x02 0x04 0x08 0x10 0x20.

    Writing a test that fails when a wire byte moves is a different kind of promise from writing a test that a function returns a value. This is the first release where the protocol is treated as a compatibility surface.

    Also

    Demo archive cards with 140px levelshot banners, CRT scanlines, a bottom vignette, a 404 fallback to gametype hue, and hidden-<img> preloading for every map in the pool. A grenade launcher trail bug fixed — single ribbon, "avoids reading as delayed duplicate".

    Known Issues: none stated.