SWMRNibbleArray
基本信息
com.mitchej123.supernova.light.SWMRNibbleArray ——
光照半字节存储,命名致敬 SWMR(Single Writer Multiple Reader)区域存档方案。
关键常量
| 常量 | 值 | 说明 |
|---|---|---|
ARRAY_SIZE |
16 * 16 * 16 / 2 = 2048 |
每 section 半字节数组长度 |
VISIBLE_ABSENT |
0 |
不存在 |
VISIBLE_ZERO |
1 |
全零(无光) |
VISIBLE_FULL |
2 |
全满 |
VISIBLE_DATA |
3 |
有实际数据 |
ARRAY_SIZE的注释写// 2048 bytes——16*16*16 = 4096,/2是因为每字节存两个 4-bit 半字节。 注释值与表达式一致,不是笔误。
可见性标记的用途
前 4 个字节是状态标记而非光照值:
读到 ABSENT 可跳过整个 section(不分配),
FULL / ZERO 可走快速路径而不用逐格计算 ——
这是渲染与重算的主要加速点。
与原版的桥接
| 方法 | 行 | 说明 |
|---|---|---|
static fromVanilla(NibbleArray) |
42 | 从原版 NibbleArray 转换 |
无参构造 SWMRNibbleArray() |
71 | 新建 |
使用者
Supernova Engine 的
getNibblesOnChunk / setNibbles 抽象方法即操作此类。
相关条目
源码
src/main/java/com/mitchej123/supernova/light/SWMRNibbleArray.java