← 1.20 ReplayEntropic Dev

REPLAY 1.20 · RESEARCH NOTES

The asset brain

A linked map of loading, rendering, and collision evidence.

34 notes · Latest source update
SOURCE NOTE · Updated 2026-09-28 17:13:52 UTC
On this page

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_MaterialTechniqueSetPtr ID 20036 reaches the root and asset-registration helper under paired Load_Material and Load_XAssetHeader parents. Replay ID 24731 Load_MaterialTechniqueSetAsset registers the handler; its Replay pool is named techset at type 0x12. The Game-Test immediate 0x0E is 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 20035 Load_MaterialTechniqueSet → ID 20034 Load_MaterialTechniquePtr → ID 20033 Load_MaterialTechnique. ID 20035 follows a packed-pointer route at its +0x38 access 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 type 0x0E (vertexshader), whereas ID 24731 is Load_MaterialTechniqueSetAsset at type 0x12 (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 exact Load_VertexShader* symbol, so retain q.
  • Mark references include Replay Mark_MaterialTechniqueSetPtr and a 16-byte Replay function extent for Mark_MaterialTechniqueSetAsset. Separate Mark_GfxImageAsset and Mark_GfxDecalVolumeMask leaves 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_GfxImageRawGpuTempArray is 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