跳到主要内容

第 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 排序的引用列表组成。

OffsetSizeTypeField
02uint16renderVersion,必须为 1
22uint16headerSize,必须为 64
44uint32batchCount
84uint32batchSize,必须为 24
124uint32chunkRefCount
164uint32chunkRefOffset
2012float32[3]boundsCenter
324float32boundsRadius
3628uint8[28]sourceHashPrefixAndReserved:前 16 字节为 Source Hash 前缀,其余必须为零

Batch Record:uint16 materialClassuint16 flagsuint32 firstChunkRefuint32 chunkRefCountuint32 firstIndexuint32 indexCountuint32 reserved。Chunk 引用列表为 int32[chunkRefCount]

materialClass0=opaque1=translucent2=unlit3=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 所描述的资产。