完成日期:2026-05-31
-
crates/render/src/chunk_mesh.rsgenerate_with_neighbors默认切到贪婪网格化,继续保留跨区块面剔除入口。- 同材质、同 4 角 AO 的单位面合并为大 quad。
- CPU mesh 输出
vertices + indices + bounds + visible_faces,其中visible_faces用于统计 Phase 2 等价顶点数。 - 顶点 AO 使用经典 3 邻域采样,shader 继续消费 packed vertex 的 2-bit AO。
-
crates/render/src/passes/opaque.rsChunkMeshGpu增加 index buffer、index_count、world-space bounds。- OpaquePass 上传 vertex/index 两类 buffer,draw 路径改为
draw_indexed。
-
crates/render/src/lib.rsRenderer::render_world每帧从view_proj抽取 frustum 平面,对 chunk bounds 做 AABB 视锥剔除。- OpaquePass 从“每 chunk 一个 render pass”改为“单 render pass 多 draw”,减少 CPU 编码开销。
- 返回
WorldRenderStats:总 chunk、可见 chunk、剔除 chunk、draw 顶点/索引数。
-
crates/client/src/mesh_jobs.rsMeshJobQueue的 pending 结构从HashSet升级为HashMap<ChunkPos, MeshPriority>。- 重复入队时允许升级优先级,玩家附近
Critical/Highchunk 不会被旧任务卡住。 run_until_budget返回MeshRunStats,默认预算仍为 4ms/帧。
-
crates/client/src/lib.rs- HUD stat 增加
VISIBLE / CULLED / DRAW_V/I。 - HUD stat 增加 mesh 批次耗时、任务数、Phase 2 等价顶点数、贪婪后顶点/索引数和减少比例。
- HUD stat 增加 world/player/selection/ui pass 的 CPU 编码耗时。
- HUD stat 增加
cargo fmtcargo test -p voxweb-rendercargo test -p voxweb-clientcargo check --target wasm32-unknown-unknowncargo test
- HUD pass 耗时是 CPU 编码耗时,不是 GPU timestamp query;WebGPU timestamp query 可作为后续精确 profiling 增强。
- OpaquePass 仍保留每 chunk 独立 globals bind group;Phase 8 接 RenderGraph / camera uniform 后可进一步整理资源绑定。
- 透明方块仍留给 Phase 8 的 TransparentPass,不参与本期贪婪合并。