top of page

简易我的世界

项目总览

程序化生成

基于Perlin Noise的程序化地图生成,包含草地、泥土、海滩、雪原、河流、海洋并且根据不同的地形生成各种植被

​程序化生成

每个Chunk程序生成代码

Hidden Surface Removal

通过使用背面剔除来剔除 99% 的面以优化性能,即使有1 亿个块,也能保持大约600 FPS。对于每个块,只有当相邻块为空气时,我才将顶点信息放入顶点缓冲区。

Hidden Surface Removal

每个方块Hidden Surface Removal的代码

基于体素的光照

每当玩家放置一个方块时,该方块都会使用方块迭代器检查所有附近的方块(16x16),并进行光强度衰减(初始强度为 16,迭代每个方块时为 -1)重建Chunk,并根据光强度在着色器中设置亮度。

将 GlowStone 放到世界中

体素光照传播

放置/移除方块时把Chunk标记为Dirty并处理灯光

放置/挖掘方块

我使用了快速射线投射与方块相交,并且在此基础上,为了提高性能,我还使用方块迭代器来加速相交过程。

将方块放置到世界里

方块迭代器类的代码

使用方块迭代器进行射线投射

地图流式加载

我使用多线程根据玩家的世界位置每帧仅加载一个Chunk(32768个方块) ,并取消最大半径之外的Chunk。

通过距离雾来掩盖新Chunk的加载。

地图流式加载和雾

地图流式加载代码

截图

  • LinkedIn
  • YouTube

© 2025 by Jiabin Portfolio. All rights reserved.

bottom of page