Umbra and Culling
Target-binary evidence
Atlas indexes Load_ProcessStructLayout_UmbraGate at RVA 0x4F2A80 (321 bytes) from candidate archive_impl_r_bsp_db.h:33669-33680. The GfxWorld layout registration at 0x4D1BA0 also maps to the same candidate source, which registers Umbra gate count/data and tome size/data/reference members (source lines 32907-32923). Additional world visibility groups include GfxWorldDpvsStatic and GfxWorldDpvsDynamic. These function RVAs are target facts; structures remain candidate evidence.
Candidate serialized layout
- Candidate
UmbraGate: size0x20, alignment 4. Fields:objIDuint at0x00,Boundsat0x04(size0x18),closeDistancefloat at0x1C(archive_impl_r_bsp_db.h:33669-33680). - Candidate GfxWorld Umbra members:
numUmbraGatesat0x4090, gate pointer at0x4098,umbraTomeSizeat0x40A0, byte-arrayumbraTomeDataat0x40A8, and tome pointer at0x40B0(archive_impl_r_bsp_db.h:32907-32923). - Candidate world visibility components register
dpvsanddpvsDynat0x3BE8and0x3E60; this notes the existence of static/dynamic visibility data without claiming bitset semantics (archive_impl_r_bsp_db.h:32901-32905).
Format observations
The candidate schema exposes an Umbra gate record and both an embedded tome byte array and a tome reference. Together with DPVS groups, this is evidence that world visibility/culling data is represented alongside GfxWorld. It does not reveal the Umbra tome's internal format or query runtime protocol.
Confidence and unknowns
- High: target loader symbols for UmbraGate and GfxWorld are indexed at the RVAs above.
- Medium: source mapping to the generated BSP header.
- Candidate only: listed member sizes/offsets.
- Unknown: gate ID domain, bounds coordinate convention, close-distance units, embedded-versus-external tome selection, DPVS bit ordering, cell mapping, and Umbra runtime version.
Evidence: Evidence Scope · Atlas validation · BSP/Umbra loader source.