All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Filesystem:
FS_LoadLibraryextracts native.so/.dllmodules from.pk3intovm/native_cache/under the game home path (CRC-checked) beforedlopen, whencom_nativeLibraryExtractPk3is 1 (default; startup log line). - Lua:
script_reloadfalls back toFS_ReadFile+luaL_loadbufferwhen a script lives only inside a pack (virtual paths). examples/demo_game:demo_lua.cfg,scripts/lua/demo_hooks.lua, andexec demo_lua.cfgfromautoexec.cfg(Lua demo whenUSE_LUA=ON); pk3 packs bothvm/ui<arch>.soandvm/ui.<arch>.soaliases for native UI probe order.- Vulkan Forward+:
r_forwardPlusLuminanceSort(0/1, archived, default 1); push constant +forward_plus_tile_cull.comppartial selection by RGB sum when a tile exceedsr_forwardPlusMaxPerTile;compile_shaders.sh --applyupdates SPIR-V blobs. - docs/CURL_NETWORKING.md: tutorial for client libcurl usage (build,
cl_dlURL/sv_dlURL,download/dlmap,DLF_*flags, security, extending for MOTD/API/music). - Vulkan ImGui:
r_imguicvar (default 1) skips inspector CPU work when 0; startup log line in renderer init; clienttoggle_imguicommand and F11 hardcoded toggle whenUSE_IMGUI+ Vulkan client build. examples/demo_game:idtech3_demo.pk3embeds a minimal native UI module (vm/ui<arch>.soor.dll) so the demo skeleton can open a window without retailui.qvm(examples/demo_game/native/ui_skeleton_stub.c, CMake targetdemo_ui_skeleton).examples/demo_skeleton/: user-friendly demo playfield (./scripts/run_demo.sh, auto-detect layout,baseq3hint, help text);scripts/run_demo.shentry point;base/+idtech3_demo/README stubs.- CTest
test_demo_game_pk3: verifiesexamples/demo_gamezip layout (configs + optionalcc-builtvm/ui*.so) matches CMake staging. - Vulkan:
vk_procs.choldsqvk*function pointer definitions (split fromvk.c);vk_instance.cno longer duplicatesexterndeclarations. - Vulkan:
vk_shader_modules.choldsvk_create_shader_modulesand includesshader_data.c/shader_binding.c(split fromvk.c). - Vulkan:
vk_pipelines_persistent.choldsvk_alloc_persistent_pipelines(split fromvk.c). - CHANGELOG.md for release tracking
- Semantic versioning in CMake (project VERSION 1.0.0)
- ENABLE_FORTIFY_SOURCE option for buffer overflow protection (default ON)
- ENABLE_ASAN option for AddressSanitizer in Debug builds
- .editorconfig for consistent editor formatting
- .clang-format for style enforcement (clang-format -i)
- docs/MIGRATION.md for upgrade guidance
- docs/DEPRECATION_POLICY.md for deprecation process
- Unit test infrastructure: tests/unit/, BUILD_UNIT_TESTS option, unit_macros test
- compile_engine.sh asan option for local AddressSanitizer builds
- CI: Clang in Ubuntu build matrix, ASAN job, FORTIFY_SOURCE enabled on Linux
- Docs: ARCHITECTURE.md and QUICKSTART.md describe pk3 native library extraction (
vm/native_cache/,com_nativeLibraryExtractPk3). - Client: clearer message when UI VM fails to load (idtech3_demo ships native UI in
vm/, not configs-only). - Vulkan Forward+:
vk_forward_plus_dispatch_tile_cullpassesluminanceSortin push constants; init logs when sort is on. - FORTIFY_SOURCE now enabled by default in Release builds (compile_engine.sh)
- Vulkan cinematic path: r_fboCinematic cvar, vk_in_render_pass reset, luminance skip workaround
- Vulkan PBR: direct specular uses anisotropic GGX when an anisotropy map is bound (
r_pbr_anisotropicSpeculardefault 1); replaces the old roughness-only blend. Re-runscripts/compile_shaders.shafter changinggen_frag.tmpl. - Vulkan PBR: anisotropic visibility for direct light; optional IBL roughness stretch from the anisotropy map (
r_pbr_iblAnisoStretch); clearcoat base attenuation and Charlie sheen with optional fourthsheenScaleroughness token.
- Legacy
r_vfog*engine cvars andvk_vfog.c/vk_vfog.h: volumetric fog is configured only viar_volumetricFog*(and map/r_fog*as documented). Editorworldspawnkeysvfog_*remain separate map data, not console cvars.
- _FORTIFY_SOURCE=2 enabled for GCC/Clang Release builds when ENABLE_FORTIFY_SOURCE=ON
1.0.0 - TBD
Initial tagged release. See docs/ROADMAP.md for feature status.