项目 / Projects

Neolectrum

用 Rust 与 WebGPU 重写的 Minecraft 渲染引擎

一个 NeoForge 模组,通过 mixin 在启动时接管原有 GL 渲染器, 把 Minecraft 的渲染后端替换为 Vulkan 或 DirectX 12。 仓库名为 wgpu-mc-neo,是 wgpu-mc 的非官方 NeoForge 分支。

Powered by WebGPU Rust NeoForge Alpha · 开发中
模组版本
2612.0.7-alpha
运行环境
Minecraft 26.1 · NeoForge 26.1.2.109
渲染后端
Vulkan · DirectX 12
语言构成
Rust · Kotlin · WGSL · Java
许可证
MPL-2.0
命名空间
dev.birb.wgpu

它是什么

wgpu-mc 始于 2021 年末,是一个用 Rust 编写、基于 wgpu crate 的独立 WebGPU 渲染引擎,目标是给 Minecraft 换掉现有的 OpenGL 渲染器。 Neolectrum 就是把这个引擎接进 NeoForge 的那一层。

上游原项目距离既定目标仍有距离,因此本项目对 Rust 侧做了重构与改造, 不再是单纯跟随上游迁移的子项目;同时出于可维护性与作者精力的考虑, 已移除 Fabric 模组部分,只保留 NeoForge。

作者最初想在实验性项目里引入光追/路径追踪,以及 DirectX 下的 DLSS、DLSSD、DLSSR。 但受 WebGPU 能力所限,这些只能靠 hook C++ 库之类相当「脏」的手段实现, 所以本项目不再考虑这些方向,转而专注提升这个跨 API 图形项目的实用性与稳定性。

核心特性

替换 Blaze3D,而不是打补丁

从设备、缓冲区、纹理、命令编码器到已编译管线,Blaze3D 的每一环都有对应的 wgpu 实现。渲染后端因此可以在 Vulkan 与 DirectX 12 之间切换。

GLSL → WGSL 完整转译

不是重写着色器,而是把 Minecraft 原有的 GLSL 经 cyntax 转译成 WGSL,再交给基于 WebGPU 的渲染管线执行。

跨 API 的图形栈

目标是把玩家从 OpenGL 的束缚里解放出来 —— DirectX 12、Vulkan、Metal,乃至更多后端,同一套引擎。

模组内的渲染设置面板

由 Rust 侧定义、经 JNI 读取 JSON,Kotlin 动态生成选项界面。加一个渲染开关不需要手写 GUI 代码。

架构

从 JVM 到 GPU,一次绘制会穿过这五层:

1
Mixin 注入层
在游戏启动时劫持原有 GL 渲染器,共 30 个 mixin
2
Kotlin 后端层
WgpuDevice / Buffer / Texture / CommandEncoder / CompiledRenderPipeline
3
JNI 桥接层
wgpu-mc-jni,暴露约 1.5 万行 Rust 接口给 JVM
4
Rust 引擎层
wgpu-mc,渲染图、管线、地形烘焙、天空与实体
5
着色器转译层
cyntax,GLSL → WGSL 的完整转译流程

已落地的着色器

sky_scatter.wgslsky_fog.wgslstars.wgslgrass.wgslentity.wgslelectrum_gui.wgsldebug_lines.wgslclear.wgsl

开发状态

地形渲染
进行中
区块烘焙已下放到 Rust 侧,近期在修地形透明与 bind group 正确性
天空与雾
已有实现
sky_scatter / sky_fog / stars 等着色器
实体渲染
进行中
模型部件上传与实体状态同步
GUI 渲染
已有实现
electrum_gui 着色器 + 自绘控件体系
光追 / DLSS 系列
已放弃
受 WebGPU 能力所限,需 hook C++ 库,收益不值

当前处于 alpha 阶段,尚不可用于日常游戏。CI 在 Ubuntu 与 Windows 双平台、 Java 25 上执行构建。

参与贡献

项目仍在早期,欢迎任何形式的贡献 —— 无论是引擎、着色器、还是 NeoForge 侧的适配。 上游引擎的贡献入口在 wgpu-mc/wgpu-mc/labels/engine。