第 12 章:RND0 区段
Directory Tag: RND0 · 作用范围: 全局 · 必须性: 可选 · Directory Codec: RAW8
RND0(Render Data)保存跨 Chunk 的渲染组织信息,例如渲染批次、可见性分组和推荐 LOD。它不得引入新的几何、颜色或体素语义;所有引用必须可以追溯到当前 CHIX、PAL0 与缓存区段。
12.1 Payload Layout
Payload 由 64 字节 Header、batchCount 个 24 字节 Batch Record 及可选的按 Chunk ID 排序的引用列表组成。
| Offset | Size | Type | Field |
|---|---|---|---|
| 0 | 2 | uint16 | renderVersion,必须为 1 |
| 2 | 2 | uint16 | headerSize,必须为 64 |
| 4 | 4 | uint32 | batchCount |
| 8 | 4 | uint32 | batchSize,必须为 24 |
| 12 | 4 | uint32 | chunkRefCount |
| 16 | 4 | uint32 | chunkRefOffset |
| 20 | 12 | float32[3] | boundsCenter |
| 32 | 4 | float32 | boundsRadius |
| 36 | 28 | uint8[28] | sourceHashPrefixAndReserved:前 16 字节为 Source Hash 前缀,其余必须为零 |
Batch Record:uint16 materialClass、uint16 flags、uint32 firstChunkRef、uint32 chunkRefCount、uint32 firstIndex、uint32 indexCount、uint32 reserved。Chunk 引用列表为 int32[chunkRefCount]。
materialClass:0=opaque、1=translucent、2=unlit、3=emissive。其他值保留。Batch 引用的 Chunk ID 必须存在,范围不得重叠,且一个 Chunk 可以出现在多个 Batch。
12.2 使用规则
RND0 仅是渲染调度提示。读取器可完全忽略它,也可在支持时用它组织 VBUF、PMSH 或自行生成的网格。Source Hash 前缀必须与当前 Source Hash 前 16 字节一致;不一致时整个 RND0 失效。
RND0 不得单独决定剔除某个 CHIX Chunk 的权威内容。若渲染器未加载某 Chunk,属于运行时策略;该 Chunk 仍是资产的一部分。
12.3 验证
验证器必须检查版本、固定大小、Offset、Batch 范围、Chunk ID 存在性、boundsRadius >= 0、有限浮点和保留字段。未知 materialClass 或不支持的 flags 使 RND0 可被忽略,不影响资产加载。
本章总结
RND0 用于加快渲染组织,而不是表达模型。任何 RND0 问题都只能影响性能或展示路径,不能改变 VOX0 所描述的资产。