跳到主要内容

第 16 章:Source Hash

sourceHash 只标识 gridSize + PAL0 基础索引/符号/RGB + 完整线性 VOX0,不是文件整体 Hash,也不覆盖 Directory、缓存、MATL、Rig、XEXT、PRVW 或 THMB:

SHA256(
LE_u16(gridSize) ||
canonicalJson([{"index":index,"symbol":symbol,"rgb":[r,g,b]}, ... PAL0 文件顺序 ...]) ||
linearVoxelBytes
)

canonicalJson 使用 UTF-8、键 Unicode 字典序、无无意义空白。体素缓冲必须先由所有 CHIX/VOX0 按 chunkId 恢复,且遵循 x-fastest 顺序。Header 和 META 的 64 位小写十六进制文本必须相同。

改变网格尺寸、PAL0 的 index/symbol/RGB 或任一 palette-index 体素都会改变 hash;仅改变压缩选择、MSH0、VBUF、PMSH、RND0、ANM0、PRVW、THMB、DIR0 物理顺序或 Footer generation 不会改变 hash。旧文档中将 META、CHIX 或 VOX0 私有 Header 拼入 hash 的算法不适用于 VFP 1.3。