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.
alphaIndexadded to transparent meshes so additive blending renders last, and
mustDepthSortFacets enabled.
Texturegroupextended to track lightmap indices; primary lightmap is the most
commonly used one in the group.
The Silly One
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.