Celeritas(内嵌地形渲染引擎)

基本信息

属性 值
主包 com.gtnewhorizons.angelica.rendering.celeritas
路径 src/main/java/com/gtnewhorizons/angelica/rendering/celeritas/
文件数 51(顶层 30 + 6 个子包)
modid 无 —— 不是独立 mod

Celeritas 是 Angelica 为 1.7.10 补齐的现代地形渲染引擎(对应 1.13+ Minecraft 的 chunk 渲染重写)。它没有 @Mod 注解,不是独立 modid。

子包构成

子包 文件数 主题
threading 6 分块构建线程池
iris 5 与 Iris 着色器的对接
world 4 世界 / 区块数据结构
light 3 光照引擎
api 2 对外接口
compat 1 兼容
顶层 30 核心:CeleritasSetup、CeleritasWorldRenderer、特征注册等

rendering/ 的全貌

Celeritas 位于 rendering/ 下,该目录共 130 个文件:

子包 文件数 主题
celeritas 51 见上
tesr 29 TileEntity 渲染器(TESR)
particles 11 粒子
culling 7 视锥 / GPU 剔除(GpuCulling、GpuCullingMode)
items 5 物品 / 方块渲染列表(ItemRenderListManager、BlockRenderListManager)
voxelization 2 体素化(阴影相关)
顶层 25 FpsReducer、FramePacer、TileEntityRenderBoundsRegistry、AngelicaBlockSafetyRegistry 等

voxelization/ 的 2 个文件有对应的单元测试 src/test/java/.../rendering/voxelization/ShadowVoxelizerTest.java。

初始化链路

阶段 位置 动作
preInit ClientProxy.java:167 MinecraftForge.EVENT_BUS.register(CeleritasDebugScreenHandler.INSTANCE)
init ClientProxy.java:156 CeleritasSetup.ensureInitialized()
init ClientProxy.java:163-166 FramePacer.setIdleWork(...) 把空闲帧工作接到 CeleritasWorldRenderer.runFrameIdleWork(deadlineNanos)

getInstanceOrNull()(ClientProxy.java:165)说明 CeleritasWorldRenderer 在该回调触发时可能尚未存在,故用空安全写法。

混用 MBI

celeritas/biome_blending 在 mixin 侧有 5 个补丁,对应 1.7.10 原版缺失的「按群系混合地形颜色」。见 Celeritas mixin 分组。

相关配置

配置 位置 默认 含义
enableThreadedChunkBuilding AngelicaConfig.java:12 true 多线程分块构建(RequiresWorldRestart)
chunkBuilderThreadCount AngelicaConfig.java:26 0 0 = 自动,-1 = 单线程(RangeInt(-1,16))
gpuCullingMode AngelicaConfig.java:20 CPU_ONLY CPU_ONLY / COMPUTE(需 compute shader)
optimizeInWorldItemRendering AngelicaConfig.java:261 — 开启后 ClientProxy.java:195-198 注册两个 RenderListManager 的 reload listener

系统属性握手

SystemProperties.java:84-86 专门留了两个 key,注释为「Set by us, read by celeritas」:

celeritas.enableGLDebug
celeritas.lwjglService

本仓内未找到这两个属性的写入方 —— 属于「预留接口,值由外部设置」。

ASM 与 mixin 双通道

通道 类 共享实现
FML CeleritasBlockTransformer(62 行) shared/transformers/CeleritasBlockTransform(172 行)
RFB RFBCeleritasBlockTransformer(100 行) 同上

shared/transformers/TileEntityMarkerTransform(137 行)只被 RFB 侧使用。见 FML Transformers 与 AngelicaRfbPlugin。

相关条目