* refactor(gameplay): remove unused includes and members, clear vertex data after upload
* feat(shader-tools): add recursive #include support for shader sources
* refactor(shaders): extract noise and sky color functions into shared GLSL includes
* refactor(chunk): add ChunkInfo and switch to shared_mutex for chunk access
Introduced ChunkInfo struct to expose chunk metadata (position, seed, biome). Replaced std::mutex with std::shared_mutex for chunk map to allow concurrent read access. Added World::get_chunk_info() method. Temporarily disabled cave/river cleanup and debug biome reporting.
* refactor(cave,river,chunk): use ChunkPos as key for paths and track cave existence
* refactor(gameplay): use deterministic origin-based cave and river generation
Compute cave and river paths on-the-fly per chunk from a deterministic origin instead of storing them globally. Remove concurrent hash map storage, shared mutexes, and related cleanup methods. This simplifies concurrency and reduces memory overhead.
* refactor(world): remove unused chunk generation progress tracking
* feat(renderer): add fog effect based on render distance
* refactor(gameplay): remove dead code and simplify chunk neighbor context
Remove the large commented-out `init_chunks()` function, and eliminate the `affected_neighbor` tracking in `gen_chunks_internal()`. This simplifies the neighbor context building and removes unused vertex data regeneration for affected neighbors.
* refactor(gameplay): move chunk generation phases into gen_chunk method
Consolidate multiple phase generation calls into a single gen_chunk() method on Chunk, which handles neighbor generation and ensures thread safety. Simplify World::gen_chunks_internal by using gen_chunk() instead of manual phase orchestration.
* fix(gameplay): use gen_phase_one to get seed
* feat(world): integrate thread pool and async chunk generation
* fix(renderer): correct shader uniform name and remove unused uniform
* feat(gameplay): add temporary chunk flag to prevent path clearing
* fix: add thread safety for cave and river path mutexes
* refactor: remove unused uniforms and set cameraPos uniform outside lambda
* feat(world): add dynamic thread pool resizing
* feat(world): add thread pool size management and UI controls
* feat(world): add ChunkLoadStyle enum and rename chunk_pos to get_chunk_pos
* feat(player): add configurable fly Y speed
* refactor(world): add thread pool start/stop and auto-detect threads
Extract thread pool starting and stopping into dedicated methods. Set default pool threads to 0 to enable automatic detection of available cores, and ensure thread pool is properly managed during world rebuild.
* fix: include shared_mutex header
* fix(gameplay): simplify set_chunk_load_style switch and fix fallthrough bug
* fix(world): add missing include for <utility>
* refactor: use TBB for concurrent hash maps and parallelize chunk processing
* fix: tbb link fail
* refactor(chunk): remove biome check for caves in rivers and oceans
* refactor(random): replace std distributions with custom implementations
Avoid overhead and platform-dependent behavior of `<random>` distributions by using direct engine operations and integer arithmetic. This ensures deterministic, cross-platform results and improves performance.
* refactor(generation): use chunk seed for cave and river paths
- Use per-chunk seed instead of global path_id for cave and river generation.
- Remove unused m_sum variables and m_path_id members.
- Clamp river yaw within 10 degrees of initial direction.
- Fix river radius interpolation (use t instead of 1-t).
- Lower sea level from 64 to 63.