-
Notifications
You must be signed in to change notification settings - Fork 0
srcs__streaming__chunk_manager_cpp
Ishi_eenn edited this page May 19, 2026
·
2 revisions
プレイヤー周辺チャンクの生成、メッシュ構築、GPUアップロード、遠方チャンク破棄を管理する。地形生成はワーカースレッド、GPU処理はメインスレッドで行う。
-
rebuildModifiedBlock: 行 12-23 -
ChunkManager::ChunkManager: 行 28-40 -
ChunkManager::~ChunkManager: 行 42-47 -
ChunkManager::destroyAll: 行 49-53 -
ChunkManager::workerFunc: 行 58-84 -
ChunkManager::drainTerrainDone: 行 89-122 -
ChunkManager::processMeshQueue: 行 127-142 -
ChunkManager::update: 行 147-194 -
ChunkManager::setRenderDistance: 行 196-200 -
ChunkManager::loadRadius: 行 205-240 -
ChunkManager::buildMesh: 行 245-252 -
ChunkManager::uploadPending: 行 257-267 -
ChunkManager::evictIfOverBudget: 行 272-281 -
ChunkManager::rebuildChunkAt: 行 286-293
- 場所: 行 12-23
- シグネチャ:
static void rebuildModifiedBlock(int wx, int wz, ChunkManager& mgr) - 内容: 入力データから描画または処理に使う中間データを構築する。
- 主な呼び出し:
rebuildModifiedBlock(),floor(),rebuildChunkAt()
- 場所: 行 28-40
- シグネチャ:
ChunkManager::ChunkManager(IWorld& world, IRenderer& renderer) : world_(world) , renderer_(renderer) , loaded_(MAX_LOADED_CHUNKS) , world_seed_(world.getSeed()) - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
max(),min(),hardware_concurrency(),reserve(),emplace_back(),fprintf(),thread()
- 場所: 行 42-47
- シグネチャ:
ChunkManager::~ChunkManager() - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
ChunkManager(),store(),notify_all(),join(),destroyAll()
- 場所: 行 49-53
- シグネチャ:
void ChunkManager::destroyAll() - 内容: 確保済みのリソースを解放し、再利用されない状態にする。
- 主な呼び出し:
destroyAll(),forEach(),destroyChunkMesh()
- 場所: 行 58-84
- シグネチャ:
void ChunkManager::workerFunc() - 内容: 生成要求キューからChunkPosを取り出し、別スレッドでChunkを生成して完了キューへ渡す。
- 主な呼び出し:
workerFunc(),setSeed(),lock(),wait(),empty(),load(),front(),pop(),generate(),push()
- 場所: 行 89-122
- シグネチャ:
void ChunkManager::drainTerrainDone() - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
drainTerrainDone(),lock(),empty(),move(),front(),pop(),erase(),getChunk(),registerChunk(),put()
- 場所: 行 127-142
- シグネチャ:
void ChunkManager::processMeshQueue(int max_per_frame) - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
processMeshQueue(),begin(),end(),erase(),getChunk(),contains(),buildMesh(),push()
- 場所: 行 147-194
- シグネチャ:
void ChunkManager::update(float playerX, float playerZ, uint64_t frame) - 内容: プレイヤー位置に応じて必要チャンクを要求し、完成済み地形の登録、メッシュ作成、GPUアップロード、遠方破棄を進める。
- 主な呼び出し:
update(),floor(),drainTerrainDone(),processMeshQueue(),loadRadius(),stepWater(),insert(),rebuildChunkAt(),uploadPending(),evictIfOverBudget()
手順:
- プレイヤーのワールド座標をチャンク座標へ変換する。
- 中心チャンク周辺のロード要求を作る。
- ワーカースレッドが生成したチャンクをWorldへ登録する。
- 登録済みでdirtyなチャンクをメッシュキューへ積む。
- 1フレームあたりの上限内でメッシュ構築とGPUアップロードを行う。
- ロード上限を超えた場合は遠いチャンクを破棄する。
- 場所: 行 196-200
- シグネチャ:
void ChunkManager::setRenderDistance(int rd) - 内容: 内部状態や対象データに新しい値を設定する。
- 主な呼び出し:
setRenderDistance()
- 場所: 行 205-240
- シグネチャ:
void ChunkManager::loadRadius(ChunkPos center) - 内容: 指定中心チャンクの周囲を走査し、未ロード/未要求のチャンクを生成キューへ追加する。
- 主な呼び出し:
loadRadius(),contains(),touch(),getChunk(),put(),destroyChunkMesh(),unregisterChunk(),insert(),count(),lock()
- 場所: 行 245-252
- シグネチャ:
void ChunkManager::buildMesh(Chunk* chunk) - 内容: 対象チャンクと隣接チャンクを集め、MeshBuilderでCPUメッシュを再構築する。
- 主な呼び出し:
buildMesh(),getChunk(),build()
- 場所: 行 257-267
- シグネチャ:
void ChunkManager::uploadPending(int max_per_frame) - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
uploadPending(),empty(),front(),pop(),uploadChunkMesh()
- 場所: 行 272-281
- シグネチャ:
void ChunkManager::evictIfOverBudget() - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
evictIfOverBudget(),size(),evictLRU(),destroyChunkMesh(),unregisterChunk()
- 場所: 行 286-293
- シグネチャ:
void ChunkManager::rebuildChunkAt(ChunkPos pos) - 内容: 入力データから描画または処理に使う中間データを構築する。
- 主な呼び出し:
rebuildChunkAt(),contains(),getChunk(),erase(),buildMesh(),push()
ft_vox 仕様書
- Home
- 概要
- Core
- Player
- World
- Streaming
- Renderer
- srcs/renderer/frustum.cpp
- srcs/renderer/minimap.cpp
- srcs/renderer/renderer.cpp
- srcs/renderer/shader.cpp
- srcs/renderer/skybox.cpp
- srcs/renderer/texture_atlas.cpp
- srcs/renderer/title_screen.cpp
- srcs/renderer/frustum.hpp
- srcs/renderer/minimap.hpp
- srcs/renderer/renderer.hpp
- srcs/renderer/shader.hpp
- srcs/renderer/skybox.hpp
- srcs/renderer/texture_atlas.hpp
- srcs/renderer/title_screen.hpp
- Interfaces
- Shaders
- Build / Docs