-
Notifications
You must be signed in to change notification settings - Fork 0
srcs__world__mesh_builder_cpp
Ishi_eenn edited this page May 19, 2026
·
2 revisions
チャンクのブロック配列から、実際に見える面だけを頂点/インデックスに変換する。水は透明描画用に別インデックスへ分ける。
-
getAtlasUV: 行 65-79 -
MeshBuilder::getNeighborBlock: 行 87-108 -
MeshBuilder::getNeighborWaterLevel: 行 111-131 -
MeshBuilder::getWaterSurfaceHeight: 行 139-152 -
MeshBuilder::computeWaterTopHeights: 行 160-188 -
getFaceTopHeight: 行 191-199 -
getFaceAverageHeight: 行 202-205 -
MeshBuilder::addFace: 行 214-267 -
MeshBuilder::build: 行 280-352
- 場所: 行 65-79
- シグネチャ:
static void getAtlasUV(BlockType type, Face face, float& u0, float& v0, float& uw, float& vh) - 内容: 内部状態または計算結果を取得して返す。
- 主な呼び出し:
getAtlasUV()
- 場所: 行 87-108
- シグネチャ:
BlockType MeshBuilder::getNeighborBlock( int nx, int ny, int nz, const Chunk& chunk, const ChunkNeighbors& nb) - 内容: 内部状態または計算結果を取得して返す。
- 主な呼び出し:
getBlock()
- 場所: 行 111-131
- シグネチャ:
uint8_t MeshBuilder::getNeighborWaterLevel( int nx, int ny, int nz, const Chunk& chunk, const ChunkNeighbors& nb) - 内容: 内部状態または計算結果を取得して返す。
- 主な呼び出し:
getWaterLevel()
- 場所: 行 139-152
- シグネチャ:
float MeshBuilder::getWaterSurfaceHeight( int x, int y, int z, const Chunk& chunk, const ChunkNeighbors& neighbors) - 内容: 内部状態または計算結果を取得して返す。
- 主な呼び出し:
getNeighborBlock(),getNeighborWaterLevel()
- 場所: 行 160-188
- シグネチャ:
void MeshBuilder::computeWaterTopHeights( float out[4], int x, int y, int z, const Chunk& chunk, const ChunkNeighbors& neighbors) - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
getNeighborBlock(),max(),getWaterSurfaceHeight()
- 場所: 行 191-199
- シグネチャ:
static float getFaceTopHeight(const float water_top[4], Face face, int vertex_index) - 内容: 内部状態または計算結果を取得して返す。
- 主な呼び出し:
getFaceTopHeight()
- 場所: 行 202-205
- シグネチャ:
static float getFaceAverageHeight(const float water_top[4], Face face) - 内容: 内部状態または計算結果を取得して返す。
- 主な呼び出し:
getFaceAverageHeight(),getFaceTopHeight()
- 場所: 行 214-267
- シグネチャ:
void MeshBuilder::addFace( std::vector<Vertex>& verts, std::vector<uint32_t>& indices, int x, int y, int z, Face face, BlockType type, const Chunk& chunk, const ChunkNeighbors& neighbors) - 内容: このファイルの責務に沿った補助処理を行う。
- 主な呼び出し:
getAtlasUV(),float(),size(),computeWaterTopHeights(),getFaceTopHeight(),push_back()
手順:
- 入力値や現在状態を検査し、処理すべき条件を絞る。
- 対象範囲やキューをループで走査する。
- 必要な参照データや現在状態を取得する。
- 計算結果を内部状態、配列、キュー、または対象オブジェクトへ反映する。
- 場所: 行 280-352
- シグネチャ:
void MeshBuilder::build(Chunk& chunk, const ChunkNeighbors& neighbors) - 内容: チャンク全体を走査し、空気に接して見える面だけを頂点化する。不透明面と水面を別インデックスに分ける。
- 主な呼び出し:
build(),clear(),reserve(),getBlock(),getNeighborBlock(),addFace(),computeWaterTopHeights(),getFaceAverageHeight()
手順:
- 既存の頂点/インデックス配列を空にする。
- チャンク内の全ブロックを走査する。
- 空気ブロックは無視し、水と不透明ブロックを分けて扱う。
- 各面について隣接ブロックを調べ、隠れている面は生成しない。
- 見える面だけaddFaceで頂点とインデックスに変換する。
- 水面は高さと透明描画用インデックスを別扱いにする。
- メッシュ構築後、dirtyフラグを落とす。
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