
噪声增强
优化了噪声生成,显著提升了加载速度。
Noise Boost
Noise Boost 是一个 Minecraft 世界生成性能优化模组,是 FastNoise 的分支。
它进一步优化了噪声填充、生物群系生成、含水层计算、区块调色板写入和高度图处理。该模组不包含配置文件——只需安装即可生效。
在相同的模组包、相同的探索路线和可比的测试条件下,与 FastNoise 相比,Noise Boost 的世界生成性能大约提升了 15%。
主要特性
- 重写了噪声区块填充的热路径,直接进行插值、方块写入、流体后处理和高度图更新,减少了冗余调用和对象分配。
- 为
PerlinNoise预构建了有效的倍频程执行计划,只遍历实际存在的倍频程,并使用固定的原始数组存储振幅和频率因子。 - 复用密度函数临时数组,并严格限制深度和长度上限,减少短生命周期垃圾。
- 缓存含水层候选位置、坐标和距离;当相邻方块沿单一坐标轴变化时,增量更新平方距离,避免每次调用都进行完整的三轴距离计算。
- 在同一方块内延迟求值并复用屏障噪声结果;移除含水层热路径中的回调对象和冗余的绝对值计算。
- 为原版默认距离度量提供无分配版本的
Climate.RTree搜索内核,同时保留原始子节点顺序和严格比较规则。 - 优化生物群系调色板构建、区块段写入、材质规则遍历和高度图处理。
- 在噪声插值完成后立即释放临时数组和含水层缓存。
性能说明
当前基准测试结果显示,Noise Boost 比 FastNoise 大约快 15%。实际提升可能因以下因素而异:
- CPU 架构和可用线程数;
- JVM、堆内存和垃圾回收器设置;
- 世界种子、维度和地形生成器;
- 渲染距离、预生成范围和探索路线;
- 模组包中的其他生物群系、结构和世界生成模组。
因此,15% 是基于当前测试环境的参考值,不保证在所有配置下都能获得相同的提升。
内存与生命周期修复
Noise Boost 解决了在 FastNoise 派生实现中发现的可疑内存泄漏或对象保留问题:
NoiseChunk使用的临时密度计算数组在插值完成后会清除引用;- 含水层候选位置、候选坐标、候选距离和临时屏障噪声缓存在区块噪声生成完成后被释放;
- 可复用数组有严格的深度和长度上限,防止无界增长;
Climate.RTree中的线程局部搜索状态在每次查询后清除叶节点引用,防止长期保留世界拥有的对象;PerlinNoise中的倍频程执行计划仅由对应的噪声实例持有,不建立静态对象引用链;- 不使用 Worker
ThreadLocal缓存来永久持有区块、NoiseChunk或含水层对象。
这些更改主要防止临时世界生成数据被意外保留。这里提到的“内存泄漏修复”特指已识别的潜在保留路径,并不保证解决由其他模组或 JVM 本身引起的所有内存问题。
来源与致谢
Noise Boost 基于 ZenXArch 的 FastNoise 开发。感谢 FastNoise 的原作者为世界生成优化提供了基础。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。