move BlocksRenderer voxels buffer fill to main thread

This commit is contained in:
MihailRis 2025-12-18 00:30:33 +03:00
parent 0c62951062
commit c46a6ad3bd
4 changed files with 81 additions and 45 deletions

View file

@ -21,6 +21,7 @@ class Chunks;
class Frustum;
class BlocksRenderer;
class ContentGfxCache;
class VoxelsVolume;
struct EngineSettings;
struct ChunksSortEntry {
@ -38,6 +39,11 @@ struct RendererResult {
ChunkMeshData meshData;
};
struct RendererJob {
std::shared_ptr<Chunk> chunk;
std::shared_ptr<VoxelsVolume> volume;
};
class ChunksRenderer {
const Chunks& chunks;
const Assets& assets;
@ -48,10 +54,11 @@ class ChunksRenderer {
std::unordered_map<glm::ivec2, ChunkMesh> meshes;
std::unordered_map<glm::ivec2, bool> inwork;
std::vector<ChunksSortEntry> indices;
util::ThreadPool<std::shared_ptr<Chunk>, RendererResult> threadPool;
util::ThreadPool<RendererJob, RendererResult> threadPool;
const Mesh<ChunkVertex>* retrieveChunk(
size_t index, const Camera& camera, bool culling
);
std::shared_ptr<VoxelsVolume> prepareVoxelsVolume(const Chunk& chunk);
public:
ChunksRenderer(
const Level* level,