跳到主要内容

附录 C:实现检查清单

本清单可用于发布读取器、写入器、编辑器、编译器或验证器之前的自测。

C.1 最小读取器

  • 读取 64-byte Header,验证 VFPK、版本、大小、保留字段。
  • 读取最后 64-byte Footer,验证 VFPF、文件长度、Directory 范围和 CRC32。
  • 解析 DIR0,验证 Entry 长度、范围、对齐、交叠和 Payload CRC32。
  • 支持 META、PAL0、CHIX 和 RAW8 VOX0。
  • 支持 Palette Index 0 为空、1..255 为 PAL0 引用。
  • 支持 VFP 指定的 X-fastest 线性体素顺序。
  • 拒绝缺失、重复、损坏或互相冲突的权威区段。
  • 忽略不支持的可选缓存,不用缓存替代 VOX0。

C.2 完整读取器

  • 支持 VOX0 内部 RAW8 与 RLE8。
  • 支持 SCNE、MSH0、VBUF、PMSH、RND0、ANM0、BORD、PRVW 和 THMB 的安全降级。
  • 消费 THMB 时,验证 Directory CRC、PNG signature、IHDR 的 RGBA8 / 无隔行格式,以及 64..1024 的正方形尺寸。
  • 验证所有可使用缓存的 Source Hash、Chunk ID 和内部范围。
  • 能按 Chunk 延迟读取和释放体素数据。
  • 对不可信文件设置文件、Payload、Chunk、预览和内存上限。

C.3 合规写入器 / 编译器

  • 输出 Header、META、PAL0、CHIX、全部 VOX0、DIR0 和 Footer。
  • 所有固定结构大小、Offset、Length 和 8-byte 对齐正确。
  • META 统计值、PAL0、CHIX、VOX0 相互一致。
  • 目录中每一个 Chunk 仅有一个 VOX0。
  • 所有 CRC32 正确;Footer 的 Directory CRC32 覆盖完整 DIR0。
  • Source Hash 基于规范化权威输入重算且写入 META。
  • 任何缓存都携带/引用当前 Source Hash。
  • 不输出非零保留字段、未知 Flag 或未定义枚举。
  • 相同规范化输入和相同选项产生稳定权威输出。

C.4 编辑器

  • 修改体素先更新 VOX0,再处理缓存。
  • 边界体素编辑会使相邻 Chunk 表面缓存失效。
  • 修改 PAL0 会使全部颜色相关缓存失效。
  • 修改权威数据会增加 sourceRevision 并重算 Source Hash。
  • 保存前重新生成或移除已失效缓存。
  • 不会只修改 VBUF/PMSH 后把结果保存为 VFP。

C.5 验证器与测试集

  • 有最小单 Chunk RAW8 文件。
  • 有含空体素、透明 Palette、多个 Chunk 和边缘 Chunk 的文件。
  • 有 RLE8 零 Run、溢出、下溢、奇数长度等负例。
  • 有错误 CRC、越界 Offset、交叠区段、重复 Tag/Chunk ID 的负例。
  • 有 Source Hash 不匹配和缓存过期的负例。
  • 有未知可选 Tag 与未知必需 Tag 的前向兼容测试。
  • 有追加式保存后只认最后 Footer 的测试。

C.6 发布前判定

只有在全部“最小读取器”项目和与产品角色相关的项目通过后,才应声明 VFP 1.3 兼容。仅支持预览或网格缓存的产品不得标称为合规读取器。