C^2M 引擎

C^2M 引擎

C2ME 插件,通过 OpenCL 提供硬件加速的世界生成功能。

优化

C2ME OpenCL 加速模块

实验性 C2ME 附加组件,通过 OpenCL 提供硬件加速的世界生成。需要基础 C2ME 模组。
强烈建议安装 ScalableLux,因为光照处理很容易成为瓶颈。

注意

此模组需要 Java 25 才能正常运行,即使在低于 26.1 的版本上也是如此。

世界生成在 vanilla 世界生成中应具有完全的 vanilla 兼容性,但有一个例外:
生物群系边界可能会在极少数情况下偏移一到两个方块,因为原版实现依赖于顺序。(换句话说,此模组与 Noisium 及其分支(如 NoisiumForked)一样接近 vanilla,这些模组尽管声称完全兼容 vanilla,但也存在相同的问题)

常见的世界生成非确定性适用。

目前仅实现了噪声阶段和生物群系阶段。
在 CPU 性能受限时,原版主世界预期性能提升超过 80%。性能会因种子、数据包等因素而异。

另外,世界生成现在包含 GPU 驱动程序错误。在现有世界上使用前请备份。
已知某些世界生成模组会导致灾难性失败。详情请参阅模组兼容性部分。

平台兼容性矩阵

  • 支持:已知在一般情况下完全正常工作
  • 部分:已知可以工作但存在重大限制
  • 不支持:已知完全无法工作
  • N/A:不适用,因为组合不存在
供应商 代次 驱动程序 Windows Linux MacOS
NVIDIA Maxwell 及更新 专有和开源 支持 部分¹ 未知
NVIDIA Kepler 专有 未知 支持 未知
NVIDIA 更旧的显卡 任何 未知 未知 未知
NVIDIA nouveau 支持的 GPU Rusticl on nouveau N/A 未知 N/A
Intel Gen9, Gen9.5⁵ 官方² 部分³ 部分⁴ 未知
Intel Gen11, Gen12, Gen12.5⁶ 官方² 不支持¹² 不支持¹² 未知
Intel Gen12.7, Xe2, Xe3 及更新⁷ 官方² 部分³ 部分⁴ 未知
Intel 更旧的显卡 官方² 未知 未知 未知
Intel iris 支持的 GPU Rusticl on iris N/A 未知 N/A
AMD RDNA1 及更新¹⁴ 官方⁸ 支持⁹ 支持 未知
AMD GCN 官方¹⁰ 不支持¹³ 不支持¹³ 未知
AMD radeonsi 支持的 GPU Rusticl on radeonsi N/A 部分¹¹ N/A
Qualcomm 任何 官方 不支持¹² 不支持¹² N/A
Apple 任何 MacOS 驱动程序 N/A N/A 不支持¹²
Apple 任何 Rusticl on asahi N/A 未知 N/A
  • ¹ 已知驱动程序在一段时间后会挂起。驱动分支 535 LTS 似乎工作正常。
  • ² Windows 上的官方驱动程序包。Gen9 和 Gen9.5 需要最新的驱动程序:
    Gen9: https://www.intel.com/content/www/us/en/download/762755/intel-6th-gen-processor-graphics-windows.html
    Gen9.5: https://www.intel.com/content/www/us/en/download/776137/intel-7th-10th-gen-processor-graphics-windows.html
    Linux: https://github.com/intel/compute-runtime
  • ³ 已知 GPU 几乎在所有非 vanilla 世界生成时都会崩溃。你的体验可能有所不同。
  • ⁴ 已知 GPU 在处理一些复杂的生物群系数据包(如 Terralith)时会崩溃。你的体验可能有所不同。
  • ⁵ Gen9 和 Gen9.5 是第 6-9 代酷睿处理器以及第 10 代非 G 系列酷睿处理器的集成显卡
  • ⁶ 此处的 Gen11、Gen12、Gen12.5 是第 10 代 G 系列酷睿处理器、第 11-14 代酷睿处理器以及 Arc DG1、Arc A 系列的集成显卡
  • ⁷ Gen12.7 指 Meteor Lake 和 Arrow Lake 的集成显卡。
    此时它是 Core Ultra 100 系列及更高版本处理器以及 Battlemage 独立显卡及更高版本的集成显卡。
  • ⁸ Windows 上的官方驱动程序包。Linux 上的 ROCm 运行时。
  • ⁹ 已知驱动程序版本 26.5.1 总是崩溃。升级到 26.6.1+ 的现有安装也可能崩溃。
    如果你在 26.6.1+ 上遇到崩溃,建议使用 DDU 然后进行全新安装。
  • ¹⁰ Windows 上的官方驱动程序包。Linux 上的 AMDGPU-Pro 运行时。
  • ¹¹ 已知 Mesa 26.1.x 分支在 RDNA3/4 上可以工作。任何硬件组合都可能发生任何情况,包括损坏的世界生成。你的体验可能有所不同。
  • ¹² 缺少 FP64 支持
  • ¹³ 驱动程序崩溃
  • ¹⁴ 不包括 Ryzen 7000 系列和 9000 系列集成显卡。它们对于此任务来说太慢了。

此处未列出的任何硬件均处于“未知”状态。欢迎测试满足以下最低要求的其他硬件配置。

最低硬件要求

  • 可工作的 OpenCL 1.2+ 驱动程序
  • cl_khr_fp64 支持(fp64 支持)

建议具备的条件

  • 可工作的 OpenCL 3.0 驱动程序
  • cl_khr_device_uuid 用于稳定的设备匹配
  • CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE 用于最佳性能。AMD GPU 上不存在
  • cl_khr_priority_hints 和 cl_khr_throttle_hints 用于队列优先级。已知仅存在于 Intel GPU 上
  • 非统一工作组,Nvidia GPU 和一些 AMD GPU 上不存在

使用 Chunky 的性能预期

在 vanilla 主世界实现 1200+ cps 目标:

CPU:现代中端台式机(9700X、9800X3D、245K)
GPU:

  • Nvidia GTX 1060 或更高
  • AMD Radeon RX 6500 XT 或更高
  • Intel Arc B570 或更高(Intel 没有更弱的 GPU,所以就这样)

在 vanilla 主世界实现 2500+ cps 目标:

CPU:现代旗舰台式机(9950X、9950X3D、285K、270K+)
GPU:

  • Nvidia GTX 1080 Ti 或更高,RTX 4060 Ti 或更高
  • AMD Radeon RX 7600 XT 或更高
  • Intel Arc B570 或更高(Intel 仍然没有更弱的 GPU)

使用方法

Windows

  1. 安装 Fabric
  2. 安装模组
  3. 完成

Linux

由于大多数 Linux 发行版没有预装 OpenCL,你需要手动安装。

在 Flatpak 中运行是不受支持的配置

Flatpak 目前仅支持 Rusticl(可能还有 NVIDIA)作为 OpenCL 运行时,这在 Linux 上非常粗糙。请参阅上面的兼容性矩阵。

对于 Nvidia 用户

通常你的发行版提供的 nvidia 驱动程序包包含 OpenCL 驱动程序。你应该可以直接使用。如果没有,请参阅以下特定发行版的设置。

基于 Debian 的发行版(如 Ubuntu)

所有供应商:安装 ocl-icd-opencl-dev
Nvidia:安装 nvidia-driver-full 包
AMD:安装 rocm-opencl-icd 包
Intel:对于 Gen12 及以上版本安装 intel-opencl-icd,对于较旧的 iGPU(在 Debian 13 上不可用,你需要编译它们)安装 intel-opencl-icd-legacy

Arch Linux

https://wiki.archlinux.org/title/General-purpose_computing_on_graphics_processing_units#OpenCL
所有供应商:安装 ocl-icd
Nvidia:安装 opencl-nvidia
AMD:安装 rocm-opencl-runtime
Intel:对于 Gen12 及以上版本安装 intel-compute-runtime,对于较旧的 iGPU 从 AUR 安装 intel-compute-runtime-legacy

基于 Fedora 的发行版

注意:如果你使用带有 AMD GPU 的 Bazzite,你需要切换到 Bazzite-DX,而不是按照以下步骤操作。

所有供应商:安装 ocl-icd-devel
Nvidia:https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/fedora.html
AMD:安装 rocm-opencl
Intel:对于 Xe 安装 intel-opencl

使用 Rusticl(非常实验性)

这需要 Mesa 26.1 及以上版本,并且需要启用 rusticl+fp64。

兼容性

数据包兼容性

此功能保证与可以在 vanilla 中加载的数据包一起工作。例如:

  • Stardust Labs 数据包(Terralith、Incedium、...)
  • Tectonic
  • CliffTree
  • ... 更多

模组兼容性

大多数非世界生成模组应该可以工作。

对于世界生成模组:

  • 重新打包数据包的模组(即,如果重命名为 .zip 仍可作为数据包工作),请参阅数据包兼容性。
  • Tectonic 作为模组可以工作
  • 使用自定义密度函数的模组目前不工作。(例如 Ender space、The Bumblezone)
  • 推出全新世界生成器的模组不工作,并且如果没有大量工作可能永远无法工作。(例如 Big Globe)
  • 其他特殊情况:
    • Biomes O' Plenty:导致生物群系放置完全失败
    • TerraBlender:也导致生物群系放置完全失败

已知问题:

  • 已知着色器编译需要一段时间,具体取决于所使用的数据包。
  • 堆外内存使用量增加预计用于着色器编译。
  • 即使配置文件中将 pocl 列入黑名单,使用 CPU 后端的 PoCL 几乎肯定会崩溃。解决方法是完全删除它。
  • 直接引用 minecraft:beardifier 密度函数的数据包可能在地形形状上出现轻微错误。没有修复计划,因为 vanilla 不受此影响,修复它将使 GPU 吞吐量减半。

调优建议,适用于只想让世界生成速度更快的人

感谢 Discord 上的 skillnoob_。

模组:

  • ScalableLux(光照引擎优化,高性能区块生成中的瓶颈)
  • Lithium(各种内容的通用优化模组)
  • FerriteCore(内存使用改进)
  • Structure Layout Optimizer(使结构生成更快)
  • zFastNoise(加速世界生成中的噪声和表面构建器)

Java/JVM 参数:

  • -XX:+UseCompactObjectHeaders -Dchunky.maxWorkingCount=768(-Dchunky.maxWorkingCount=768 参数仅在你使用 chunky 时相关)。
  • 如果分配超过 16GB 内存,使用 -XX:+UseZGC,否则使用 -XX:+UseG1GC -XX:G1HeapRegionSize=16M 或 -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational。

然后在你的配置文件夹中的 c2me.toml 中,你可以将 globalExecutorParallelism = "default" 选项更改为你的线程数或略低于它。
例如,如果你有一个 16 线程的 CPU,你需要将其更改为 globalExecutorParallelism = 16。
注意:如果你需要 fps 和 tps 稳定,你需要为系统的其余部分保留几个线程。
你还可以在配置中启用 gcFreeChunkSerializer = true,这可以提高区块生成性能。

常见问题

这会使用多个 GPU 吗?

默认情况下,它会在它能找到的所有 OpenCL 设备上执行最少负载调度。
但是,通常你的 CPU 是瓶颈。请参阅下文。
所以除非你只有一堆 GT1030,否则不要期望多 GPU 能带来任何改进。

我的 GPU 几乎未被使用,而我的 CPU 达到最大负载。发生了什么?

使用合理的 CPU 和 GPU 组合,你将会受 CPU 限制。这主要是因为只实现了噪声阶段和生物群系阶段。
其他阶段可能在将来实现。

如何选择 GPU?

你可以在配置文件中指定白名单和黑名单。设备 UUID 可以在日志中找到。
AMD GPU 名称在日志中是 gfx something,而不是它们的营销名称。

voxy 能与此兼容吗?

可以。
简而言之,要为 voxy 生成渲染距离,请安装 Chunky,运行 /voxy import current,然后启动一个 chunky 任务。建议加入他们的 Discord 服务器以获取更多信息。

Distant Horizons 能与此兼容吗?

简短回答:不推荐。请改用 Voxy。

详细回答: DH 太慢,看不到此模组带来的好处。
如果你仍然打算使用 DH,请在 DH 中使用 Internal Server / Full - Save Chunks 模式才能使加速生效。
即便如此,你可能看不到改进,因为 LoD 生成已经是链条中最慢的部分。

我收到 OpenCL error [-1001]。这意味着什么?

OpenCL ICD 加载器无法找到任何 OpenCL 驱动程序。检查你的驱动程序安装。
建议使用 clinfo 工具进行快速检查。

这在专用服务器上工作吗?

只要驱动程序就位,在专用服务器和单人游戏上都能工作。
专用服务器仅附带 linux x86_64、linux arm64 和 windows x86_64 二进制文件。

如果初始化失败,我可以让它回退到正常的世界生成吗?

默认情况下不行。可以通过配置文件中的 openclAccel.allowIncompatibilityFallback 来实现。

我听说 Vulkan 是未来的图形 API。为什么选择 OpenCL?

  • 我熟悉它
  • 我在 vulkan 中需要无类型指针,直到最近才在 Vulkan 中存在
    这实际上要求 Vulkan 1.4,大大缩小了硬件兼容性
  • Vulkan 没有明确指定 FP64 精度,只说了“至少与 FP32 相同”。
  • 正确的舍入除法和平方根在 vulkan 规范中仍然缺失

为什么不是 CUDA?或者 Rocm?或者 Level0?或者 Metal?

没有供应商锁定的 API。

我使用带有 RDNA GPU 的 AMD,在世界生成开始之前就看到崩溃。为什么?

已知驱动程序版本 26.5.1 总是崩溃。升级到 26.6.1 的现有安装也可能崩溃。
如果你在 26.6.1 上遇到崩溃,建议使用 DDU 然后进行全新的驱动程序安装。

请参阅平台兼容性矩阵中的脚注 9。