跳到主要内容

第 21 章:兼容性规范

VFP 的兼容性目标是让旧读取器安全处理新文件,让新读取器稳定读取旧文件,并避免任何版本在不知情的情况下错误解释权威体素数据。

21.1 主版本与次版本

主版本变更表示可能影响 Header、Footer、Directory、META、PAL0、CHIX、VOX0 或其核心解释的破坏性变化。读取器遇到更高主版本必须拒绝文件,除非它显式实现该主版本。

次版本只能新增可安全忽略的能力,例如新可选 Tag、未使用 Flag 位、可选缓存或更严格的验证说明。若次版本引入无法被旧读取器安全忽略的权威语义,必须提高主版本。

21.2 未知数据处理

未知内容旧读取器行为
未知可选 Tag 且未设置 REQUIRED忽略整个 Section,保留 Warning
未知 Tag 设置 REQUIRED拒绝资产
已知必需区段的未知 Codec拒绝资产
可选区段的未知 Codec忽略该区段
未知 Flag 位位于必需区段拒绝资产
未知 Flag 位位于可选区段忽略该区段
非零 Reserved 字段严格验证器报错;读取器应警告或拒绝,取决于是否会影响语义

写入器不得在 VFP 1.3 文件中填充未来版本字段或私有数据;私有扩展必须使用未来分配的可选 Tag,并遵守未知 Tag 规则。

21.3 缓存兼容性

读取器可以只实现最小权威读取路径,而不实现任何缓存。缓存版本、缓存顶点格式和渲染策略可以随 Minor 版本演进,只要旧读取器可以安全忽略不支持缓存并从 VOX0 重建。

缓存不得成为 VFP 兼容性的强制前提。任何产品若只发放 VBUF/PMSH/PRVW/THMB 而不提供 VOX0,就不符合 VFP 1.3。

21.4 尺寸与未来格式

VFP 1.3 固定服务于单轴不超过 255 的单体体素资产。为了支持更大模型、世界分区或更宽坐标,不得在 VFP 1.3 中私自把 uint8 字段解释为 uint16,也不得复用保留字段拼接坐标。

这类能力应通过新的主版本或独立的 VWFP 世界格式引入。VFP 资产可被 VWFP 引用、实例化或嵌入,但两者的二进制语义必须独立。

21.5 兼容性承诺

一旦 VFP 1.3 冻结,以下语义不得改变:VOX0 为唯一权威体素源、Palette Index 0 为空、坐标线性顺序、Directory/Footer 定位方式、已分配 Tag/Codec/Flag 值、Source Hash 规范化输入。


本章总结

兼容性不是“尽量读出来”,而是“要么正确读取,要么安全拒绝”。VFP 通过版本、Directory、必需标记和缓存降级,保证长期演进不牺牲资产真实性。