Material and MaterialTechniqueSet
Asset format index · Material/Glass cross-reference · Map integration
Replay 1.20 layout scope
Layout and serialization statements on this page refer only to Replay 1.20 unless explicitly labeled as Game-Test cross-reference provenance. Source names help identify analogous functions; source UDT sizes, offsets, strides, and dispatch values are not Replay layout evidence.
Evidence status
Function and asset-family routes are partly known; Material and TechniqueSet payload layouts are not. Registration helper identity, pool metadata, and Mark helper routes are distinct evidence from serialized fields and runtime shader selection.
Observed format facts
- Replay
Load_MaterialTechniqueSetPtrID 20036 reaches the root and asset-registration helper under pairedLoad_MaterialandLoad_XAssetHeaderparents. Replay ID 24731Load_MaterialTechniqueSetAssetregisters the handler; its Replay pool is namedtechsetat type0x12. The Game-Test immediate0x0Eis cross-reference provenance only; dispatch values are build-local. - The Replay scalar loader chain for MaterialTechniqueSet → MaterialTechniquePtr → MaterialTechnique is identified as IDs 20035 → 20034 → 20033. Parent/child edges establish parser roles, but Replay SQLite sizes and chained PDATA extents differ for some rows, and Array/Stream caller routes remain incomplete.
- Replay loader flow is ID 20036
Load_MaterialTechniqueSetPtr→ ID 20035Load_MaterialTechniqueSet→ ID 20034Load_MaterialTechniquePtr→ ID 20033Load_MaterialTechnique. ID 20035 follows a packed-pointer route at its+0x38access and calls ID 20034; ID 20034 handles sentinel/allocation paths and calls ID 20033. ID 20036 calls the Set root and then the separate asset-registration helper ID 24731. These are Replay call/data-flow observations; no member type or serialized field meaning is inferred from the offsets. - Keep Replay's stored function sizes separate from complete PDATA boundaries: ID 20033 is 727 bytes in SQLite vs a 772-byte PDATA range; ID 20034 is 187 vs 187 bytes; ID 20035 is 241 vs 348 bytes; ID 20036 is 239 vs 239 bytes. Preserve the indexed SQLite sizes and prototypes. The PDATA/function-size differences do not define asset record sizes.
- The neighboring Replay shader route is distinct: ID 24732 remains
q_Load_VertexShaderAsset, registered with Replay type0x0E(vertexshader), whereas ID 24731 isLoad_MaterialTechniqueSetAssetat type0x12(techset). ID 20039 reaches ID 24732 and is also called from the ID 20033 body; this does not identify a serialized member or establish the source identity. The reviewed Game-Test PDB inventory has no exactLoad_VertexShader*symbol, so retain q. - Mark references include Replay
Mark_MaterialTechniqueSetPtrand a 16-byte Replay function extent forMark_MaterialTechniqueSetAsset. SeparateMark_GfxImageAssetandMark_GfxDecalVolumeMaskleaves have their own paired parents. Source/Replay dispatch-value correspondences in the linked reports are identity cross-reference metadata, not transferable Replay values. - GfxWorld and XModel parser parents call material/image helpers in observed paths, but this does not reveal a complete material dependency or runtime selection graph.
- Replay ID 20397
q_Load_GfxImageRawGpuTempArrayis a separate provisional child of the GfxLightGrid volume-atlas loader. Its loop observations and limitations are documented in GfxImage and raw GPU data; they do not establish a complete GfxImage root or payload format.
Format boundary
No Replay field offsets, Material or MaterialTechniqueSet serialized record sizes, shader payload layout, or ABI are established by these routes. A pool element size or Mark helper's asset-type immediate is not a serialized byte size. The q_Mark_Material candidate and adjacent vertex-shader owner question remain separate.
Local evidence
- MaterialTechniqueSet pointer route and manifest
- MaterialTechnique Load reassessment
- MaterialTechnique live-row/owner review, including current Replay row tuples, direct call chain, PDATA boundary census, source-overload distinction, and VertexShader/techset owner caveat
- MaterialTechniqueSet / VertexShader owner-collision report and manifest
- GfxImage Mark reassessment
- GfxDecalVolumeMask Mark reassessment