Releases: themuffinator/VibeyMapTools
Releases · themuffinator/VibeyMapTools
Release list
VibeyMapTools 3.1.0
🧭 Coming from ericw-tools? CLI names and file formats remain familiar; this round focuses on safer failure modes and more predictable tooling.
Features
- vmt-hub: Renamed from vmt-preview to reflect multi-tool hub focus
- vmt-hub: HUD overlay with portal/leaf counts, selection info, and lightgrid sample stats
- vmt-hub: Selection tools (copy face/texture info, focus camera on face/leaf, solo selected texture)
- vmt-hub: Auto-reload portal/leak visualizations (.prt/.pts/.lin) and BSP outputs for .map sessions
- vmt-hub: Optional selection ray rendering toggle
Robustness & Enhancements
- Compiler throughput: Replace detailed VIS's quadratic portal scan with a deterministic indexed priority queue; reuse flood/bitset workspaces; cache QBSP texture, model, and ambient-volume lookups; and make deep output traversals iterative ⚡
- vmt-light: Batch surface-emitter and lightgrid occlusion rays while preserving authored light order, use dense face-indexed Phong-normal storage, size Embree geometry buffers exactly before upload, and enforce channel/shadow metadata for generated skip-shadow geometry
- Core I/O: Make BSP and diagnostic-sidecar replacement transactional and permission-preserving, harden bounded memory streams and numeric conversions, and validate LIT, JSON, WAL, entity, parser, and visibility inputs before allocation or traversal 🧯
- vmt-hub: Share immutable BSP ownership with the renderer instead of copying the map, reuse visibility scratch buffers, pre-index brush-model entities, render unlit special surfaces and extended
LMSTYLE/LMSTYLE16IDs correctly, and reject geometry/lightmap uploads that exceed Qt or OpenGL limits - Tests: Copy writable map fixtures into each build tree so normal, sanitizer, and optional-dependency suites no longer race over source-tree outputs on Windows 🧪
- Core formats: Make BSP/BSPX, PAK/WAD, image, entity, map, and token parsing bounds-checked and transactional, with clearer errors for truncated or malformed input 🧱🛡️
- vmt-bsp / vmt-vis / vmt-light: Validate numeric ranges, model references, portal state, light data, and output sizes before indexing or serializing
- vmt-bsputil: Preserve the original input across chained conversions/scales, harden WAD and lightgrid handling, and keep derived paths and BSP versions consistent
- vmt-maputil: Clarify positional MAPFILE handling, reset per-run state, and report Lua/script failures reliably
- vmt-bspinfo: Reject unknown command-line switches explicitly and support
--before hyphen-prefixed BSP paths - vmt-hub: Harden file watching, reload/debounce, renderer lifecycle, threading, and range checks; fix Windows Qt platform-plugin packaging
- vmt-hub: Compile
.mappreviews in owned temporary workspaces, preserving map-specific.radlighting without overwriting sibling BSP/LIT/PRT artifacts (ericw-tools #463) - vmt-hub: Bring over upstream lightpreview selection refinements so brush-model clicks respect visibility and entity origins, Escape clears selection, and the open dialog remembers its directory (masking, offsets, workflow)
- Builds: Make platform scripts source-root aware and fail-fast, improve sanitizer/IPO option handling, support dependency-light
DISABLE_TESTSconfigurations, and report the selected configuration correctly with multi-config generators - Builds: Restore the four upstream-tested third-party Git links expected by CMake and
.gitmodules, update custom formatters for fmt 12/Clang 20, and makegit clone --recursiveproduce a configure-ready source tree 🔗 - vmt-light / builds: Remove unfinished
-denoise,-stochastic,-incremental, and GPU/OptiX experiments, the nonfunctional embedding API, and the ignored buildgui target; retain the supported Embree, HDR/lit2, andvmt-hubpaths⚠️ - vmt-light: Remove the undocumented
<texture>_norm/<texture>_nlookup so ordinary phong-normal interpolation is deterministic again - vmt-light: Add
-force_world_units_per_luxelso fast preview builds can override every per-entity_world_units_per_luxelvalue (ericw-tools #485) - vmt-light: Add opt-in
-embedsettingsto store a versioned, path-sanitized effective-settings manifest in theLIGHTING_SETTINGSBSPX lump for reproducible relighting (ericw-tools #483) 📜 - Compiler and utility CLIs: Add deferred
-werrorhandling so strict CI runs report warnings as failure only after worker, output, and logging cleanup completes 🛡️ - vmt-bsputil / vmt-maputil: Close per-run log handles at their public in-process boundary on both success and failure
- vmt-light: Add deterministic
-super/-supersamplefactors from 1 through 8 while preserving-extraand-extra4compatibility - vmt-light: Give both BSPX lightgrid formats colored, isotropic minlight, with an optional
-mingridlight/-minlight_gridoverride that otherwise inherits the world minimum 💡 - vmt-light: Batch each lightgrid point's eligible entity and sunlight rays while preserving deterministic light order and byte-identical BSPX output ⚡
- vmt-vis: Bind resumable state to the exact portal topology, real-leaf mapping, level, and visibility distance; report visible-leaf distribution statistics after detailed VIS
- vmt-bspinfo: Make potentially large lightmap-atlas/OBJ diagnostics opt-in with
-export-lightmap-atlas; ordinary inspection now writes only its JSON sidecar, while atlas export discovers and validates sibling RGB/HDR.litdata - Docs: Add source-pinned ericw-tools parity and q3map2 feature decision logs, including the rationale for leaving the ineffective experimental denoiser removed 🔬
- vmt-light docs: Explain how to reduce discrete
_sunlight2direction steps with-sunsamples/-extra4, including the legacy dome's brightness trade-off (ericw-tools #484) - vmt-bsp docs: Document the bounded workarounds and compatibility risks for point entities near filled, expanded detail collision hulls instead of changing established fill defaults globally (ericw-tools #499)
Bug Fixes
- Release automation: Reject malformed, missing, or VERSION-mismatched tags before starting the build matrix; pin checkout to the validated tag ref and publish successful tag builds directly
- Cross-platform tests: Replace hardware-sensitive Embree lightgrid byte hashes with semantic and repeatability checks, and support older Apple C++20 standard libraries
- vmt-vis: Make Quake II PHS generation transactional and repeatable, reject malformed leaf/cluster ranges and truncated compressed rows, and keep
-phsonlyfrom consuming its own partially rebuilt data - vmt-bsputil: Make
--checktolerate and diagnose invalid, cyclic, or extremely deep node trees and malformed face/edge/light-offset/style-array metadata instead of overflowing or indexing outside BSP lumps - vmt-maputil: Reject non-finite or out-of-range Lua geometry, ambiguous texture-projection tables, zero plane normals and texture scales, and non-boolean
tx2values; also restore optional Lua builds on MSVC - Core / vmt-bsp / vmt-light: Eliminate progress, decompiler, and bounce-pass concurrency races; assign lightmap blocks deterministically in face order for byte-identical output across thread counts; read BSPX HDR samples without unaligned access; and remove the ignored
-midsplitsurffractionswitch 🧵 - vmt-vis: Strictly validate PRT1, PRT2, and PRT1-AM counts, windings, endpoints, mappings, and trailing data before allocating or compiling visibility
- vmt-bspinfo: Validate lightmap-atlas BSPX tables, geometry, offsets, and sample ranges before export; decode HDR samples portably; and support extended
LMSTYLE/LMSTYLE16atlases 🧭 - vmt-hub: Fix portal overlay color uniforms being sent to the wrong shader
- Image loading: Honor
-filepriority loosewhen loading Quake II palettes and safely use black when a texture has no visible pixels (ericw-tools #492) - Image loading: Support prefix-free loose and PAK texture layouts after the traditional
textures/lookup, including Quake II metadata, while rejecting asset-root traversal and quietly ignoring null BSP texture sentinels (ericw-tools #451) - vmt-light: Preserve texture brightness while boosting saturation, fix sun energy with jitter/attenuation keys, reject backside sunlight on phong surfaces, make missing
_suntexturevalues emit nowhere (including lightgrids), use the original Half-Life min/max light scale, and preserve authored switchable-light styles asoldstyle(#401, #486, #491, #496, #470, #475) - vmt-light: Repair
-bouncedebugand-bouncelightsdebugso they render indirect lighting and bounce emitters instead of black lightmaps (ericw-tools #416) - vmt-light: Keep scanning delay-4 local-min lights after a lighting-channel mismatch; accept bare
-soft; derive its automatic radius asfloor(supersampling / 2)for both legacy and arbitrary...