mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-06-17 16:17:02 +08:00
* 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.
44 lines
1019 B
C++
44 lines
1019 B
C++
#pragma once
|
||
#include <cstdint>
|
||
#include <string_view>
|
||
namespace Cubed {
|
||
|
||
namespace HASH {
|
||
inline std::size_t str(std::string_view value) {
|
||
return std::hash<std::string_view>{}(value);
|
||
}
|
||
inline uint32_t combine_32(uint32_t seed, uint32_t v) {
|
||
seed ^= v + 0x9e3779b9 + (seed << 6) + (seed >> 2);
|
||
return seed;
|
||
}
|
||
inline uint32_t chunk_seed_hash(int32_t a, int32_t b, uint32_t fixed_seed) {
|
||
uint32_t seed =
|
||
combine_32(combine_32(fixed_seed, (uint32_t)a), (uint32_t)b);
|
||
return seed;
|
||
}
|
||
/*
|
||
inline uint32_t chunk_seed_hash(int32_t a, int32_t b, uint32_t fixed_seed) {
|
||
uint32_t h = fixed_seed;
|
||
|
||
h ^= (uint32_t)a * 0xcc9e2d51u;
|
||
h = (h << 15) | (h >> 17); // rotl 15
|
||
h *= 0x1b873593u;
|
||
|
||
h ^= (uint32_t)b * 0xcc9e2d51u;
|
||
h = (h << 15) | (h >> 17); // rotl 15
|
||
h *= 0x1b873593u;
|
||
|
||
// Finalization(avalanche)
|
||
h ^= h >> 16;
|
||
h *= 0x85ebca6bu;
|
||
h ^= h >> 13;
|
||
h *= 0xc2b2ae35u;
|
||
h ^= h >> 16;
|
||
|
||
return h;
|
||
}
|
||
*/
|
||
|
||
} // namespace HASH
|
||
|
||
} // namespace Cubed
|