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。
相关条目
- Celeritas mixin 分组 - 40 个 mixin
- FML Transformers - ASM 变换器
- AngelicaModulesConfig - 线程化与 GPU 剔除
- SystemProperties -
celeritas.*预留 key - Proxy - 初始化链路