跳到主要内容

第 10 章:VBUF 区段

Directory Tag: VBUF · 作用范围: Chunk 级 · 必须性: 可选 · Directory Codec: RAW8

VBUF(Vertex Buffer)是可直接上传 GPU 的派生缓存。它针对特定的标准化顶点格式保存顶点和索引,不保存权威体素语义。

10.1 Payload Layout

Header 固定 64 字节:

OffsetSizeTypeFieldDescription
02uint16bufferVersion必须为 1
22uint16headerSize必须为 64
44int32chunkId所属 Chunk
84uint32vertexCount顶点数量
124uint32indexCount索引数量,必须为 3 的倍数
164uint32vertexStride必须为 20
204uint32indexStride必须为 4
244uint32vertexOffset相对 Payload 起始偏移,必须为 64
284uint32indexOffset相对 Payload 起始偏移
3232uint8[32]sourceHash生成时的权威 Source Hash

顶点数组紧随 Header。每条顶点固定 20 字节:

OffsetSizeTypeField
04float32positionX
44float32positionY
84float32positionZ
124uint32normalPacked(10:10:10:2 signed normalized)
164uint32colorRgba(非预乘 RGBA8)

索引数组为 uint32[indexCount],每三个索引组成一个三角形。indexOffset 必须等于 64 + vertexCount × 20,且所有索引小于 vertexCount

10.2 生成规则

VBUF 应由有效 MSH0 或直接由 VOX0 生成。每个矩形面生成四个顶点与六个索引;实现可做跨面顶点复用,但必须保持一致法线和颜色。Position 使用 Chunk 局部坐标,应用根变换或 Chunk 全局原点属于运行时职责。

normalPacked 的三个 10 位分量表示法线,W 两位必须为 0。对六个轴向法线,写入器必须使用精确的轴向单位向量。colorRgba 必须来自 PAL0 对应条目的 RGBA;材质标志由渲染器通过 PAL0 或附加渲染数据处理。

10.3 使用与验证

读取器使用 VBUF 前必须验证 Source Hash、Chunk ID、布局版本、Offset 范围、数组长度、有限 Position 和索引范围。VBUF 不匹配当前权威数据、顶点格式不支持或校验失败时,读取器应丢弃它,回退到 MSH0 或 VOX0。

VBUF 固定顶点格式是 VFP 1.3 的跨运行时基础缓存,不要求所有平台直接使用;平台私有 Buffer 不得伪装为标准 VBUF。


本章总结

VBUF 让标准体素表面可被快速上传和绘制。它是性能优化,不是资产源,也不应被用于反推体素。