Back to Devlog
    v0.8.1
    RendererJanuary 3, 2026Release notes

    Lightmaps Were Already in Memory

    Warsow's material directive, a lightmap applier with separate desktop and mobile paths, and the double-extension bug.

    The Release After The One That Loaded Maps

    v0.8.0 parsed BSP files and admitted in its own Known Issues that lightmaps were in memory and going unused. Eight days later:

    • Warsow/QFusion `material` directive parsing —

    material diffuse.tga normal.tga.

    • `BspMeshBuilder.applyLightmaps()`: desktop uses lightmapTexture, mobile

    uses ambientTexture, with a configurable intensity multiplier.

    • New commands: bsp applylightmaps [mobile|desktop] [intensity] and

    bsp textures [filter].

    • Transparent textures no longer failed to render when shaders loaded after mesh

    creation; texture.hasAlpha = true.

    • Additive blending gets an emissive colour in applyTextures.
    • Radial-gradient fallback textures for additive shaders with missing textures —

    halos. $whiteimage and $blackimage built in.

    • alphaIndex added to transparent meshes so additive blending renders last, and

    mustDepthSortFacets enabled.

    • Texturegroup extended to track lightmap indices; primary lightmap is the most

    commonly used one in the group.

    The Silly One

    text
    Fixed texture paths incorrectly getting double extensions (e.g., .tga.tga)

    Stripping the existing extension before trying the alternatives. Which is the kind of bug you only find when a texture is named textures/foo and the resolver appends .tga to something that already had one.

    Known Issues, As Stated

    • Decal z-fighting may still occur in some cases.
    • Lightmaps may appear too bright or dark depending on the map.