* 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.
* feat(gameplay): add Ocean biome with water generation and heightmap adjustments
- Introduce Ocean biome enum, builder, and detection logic.
- Add ocean water building to all existing biomes and modify heightmap thresholds for low mountainous areas.
- Skip cave and river generation in Ocean (and River) biomes; avoid carving water blocks.
- Comment out border blending call and update block fill logic.
* fix(gameplay): re-enable border blending and protect water in cave gen
* refactor(generation): move ocean water build to later phase
* feat(block): add is_transitional property and refine border blending
* fix(block): set stone block as transitional
* fix(world): generate temporary chunks for surface blend neighbor data
* fix(gameplay): simplify block fill logic in blend_surface_blocks_borders
* refactor(tree): remove debug logging and unused include
* feat: add grass texture and update grass_block texture
* feat: add block data
* feat: add blocks_tool
* feat: add sync info and change function in blocks_tools
* feat: add check and new function
* refactor: make block texture loading data-driven
* feat: add rendering for grass
* feat: passable grass
* feat: random grass place
* fix: memory leak in TextureManager::load_cross_plane_texture