Version 0.6.0 #31

Merged
bryan merged 47 commits from dev-0.6.0 into main 2026-08-25 15:42:20 +00:00
Owner

Lighting

  • Replaced the old floor-only raycast light probe sampling with a proper volumetric probe grid (spherical harmonics L1 + RGBE8), so dynamic objects get ambient lighting sampled from probes placed throughout 3D space instead of just below their feet. Follow-up fixes: sun contribution to probes was wrong and is now corrected, and probes are no longer wastefully placed in exterior leaves where they'd sample nothing useful.
  • NODRAW faces now block sunlight during the bake, matching how they already blocked other light.
  • Fixed a seam-darkening artifact where adjacent lightmap texels sampled slightly different occlusion results at shared edges.
  • Radiosity bake now traverses the BVH near-to-far instead of an unordered scan, letting bounce/direct passes early-out on the first hit — faster bakes. Also fixed GPU baker SSBO lifetime bugs and expanded the RAD tool's CLI options.
  • Rigid-body movers no longer force a full radiosity recalculation just because they moved.

Skyboxes

  • Added a cylindrical skybox mode (single wraparound texture with vertical offset/scale/repeat controls) alongside the existing cube and gradient modes.

Water and swimming

  • Rewrote swimming physics, fixing several buoyancy and movement bugs
  • Added a scripting API so actors can query whether they're submerged, whether they're near a water exit, and get a direction toward climbable shoreline — for AI that swims.
  • Water brushes no longer get drawn into the render-to-texture reflection/refraction pass.
  • Nav-mesh path costing now accounts for ledges and water instead of treating them as free traversal.

Doors and triggers

  • Doors can have open/close sound effects with per-door volume, selectable from a sound browser in the map editor.
  • Triggers gained a "fire once" option instead of always firing on every entry.
  • Player collider can now be resized at runtime for things like crouching.

slopmap

  • NODRAW faces are tinted in the preview so they're visually distinguishable while editing.
  • Added "select touching faces with matching material," extending a selection across contiguous geometry sharing a material.
  • The punch tool now tries to preserve the cube shape of the result when the input was an axis-aligned box.
  • Texture panel got "fit" and "fit aspect" buttons to auto-scale a texture to a face.
  • Fixed a bug where duplicating a non-box brush skipped face-ID rewriting, causing the copy to collide with the original in the lightmap/UV atlas.

Engine internals

  • Added a structured logging system with a --verbose flag, replacing scattered ad-hoc prints across the engine and all slop* tools.
  • BSP build now tracks split-plane relevance per contributing brush instead of unioning all their bounding boxes together, avoiding wasted splits across dead space between unrelated rooms.
  • Removed the legacy FAC file format and the slopfac tool, superseded by the BSP-based pipeline.
  • Added shared-library build support.

Build and CI

  • Fixed Windows and macOS compilation issues.
  • Added test-compile CI workflows for Linux, Windows, and macOS.

Docs

  • New lighting model doc explaining the probe system.
  • Expanded scripting API reference; updated Blender, data API, nvim, and vscode integration docs.
# Lighting - Replaced the old floor-only raycast light probe sampling with a proper volumetric probe grid (spherical harmonics L1 + RGBE8), so dynamic objects get ambient lighting sampled from probes placed throughout 3D space instead of just below their feet. Follow-up fixes: sun contribution to probes was wrong and is now corrected, and probes are no longer wastefully placed in exterior leaves where they'd sample nothing useful. - NODRAW faces now block sunlight during the bake, matching how they already blocked other light. - Fixed a seam-darkening artifact where adjacent lightmap texels sampled slightly different occlusion results at shared edges. - Radiosity bake now traverses the BVH near-to-far instead of an unordered scan, letting bounce/direct passes early-out on the first hit — faster bakes. Also fixed GPU baker SSBO lifetime bugs and expanded the RAD tool's CLI options. - Rigid-body movers no longer force a full radiosity recalculation just because they moved. # Skyboxes - Added a cylindrical skybox mode (single wraparound texture with vertical offset/scale/repeat controls) alongside the existing cube and gradient modes. # Water and swimming - Rewrote swimming physics, fixing several buoyancy and movement bugs - Added a scripting API so actors can query whether they're submerged, whether they're near a water exit, and get a direction toward climbable shoreline — for AI that swims. - Water brushes no longer get drawn into the render-to-texture reflection/refraction pass. - Nav-mesh path costing now accounts for ledges and water instead of treating them as free traversal. # Doors and triggers - Doors can have open/close sound effects with per-door volume, selectable from a sound browser in the map editor. - Triggers gained a "fire once" option instead of always firing on every entry. - Player collider can now be resized at runtime for things like crouching. # slopmap - NODRAW faces are tinted in the preview so they're visually distinguishable while editing. - Added "select touching faces with matching material," extending a selection across contiguous geometry sharing a material. - The punch tool now tries to preserve the cube shape of the result when the input was an axis-aligned box. - Texture panel got "fit" and "fit aspect" buttons to auto-scale a texture to a face. - Fixed a bug where duplicating a non-box brush skipped face-ID rewriting, causing the copy to collide with the original in the lightmap/UV atlas. # Engine internals - Added a structured logging system with a `--verbose` flag, replacing scattered ad-hoc prints across the engine and all slop* tools. - BSP build now tracks split-plane relevance per contributing brush instead of unioning all their bounding boxes together, avoiding wasted splits across dead space between unrelated rooms. - Removed the legacy FAC file format and the slopfac tool, superseded by the BSP-based pipeline. - Added shared-library build support. # Build and CI - Fixed Windows and macOS compilation issues. - Added test-compile CI workflows for Linux, Windows, and macOS. # Docs - New lighting model doc explaining the probe system. - Expanded scripting API reference; updated Blender, data API, nvim, and vscode integration docs.
Reviewed-on: #30
Test compile workflows. No artifacts produced.
Some checks failed
Test Compile Windows / test-compile (push) Failing after 2m23s
Test Compile OSX / test-compile (push) Failing after 1m38s
Test Compile Linux / test-compile (push) Failing after 1s
a95a9f0846
bryan merged commit c156b5ebc5 into main 2026-08-25 15:42:20 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
games/engine!31
No description provided.