Skip to content

FLVER material bindings

A FLVER material binds a mesh to an external definition and supplies texture-path overrides. Sekiro uses MTD; Elden Ring uses MATBIN, even though the FLVER reference may retain a .matxml source name. Observed

FLVER2 material32 bytes88% known
ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04u32material name offsetProven
0x44u32definition path offsetProven
0x84u32texture countProven
0xC4u32first texture indexProven
0x104u32string byte countProven2 x (the characters of the material name, definition path and each binding's kind and path, each plus a terminator); SoulsFormatsNEXT names it the combined string size
0x144u32GX list offsetProven
0x184u32material indexSourcedequals the material's position in 92.4% of Sekiro's and 81.3% of Elden Ring's materials, never more than it
0x1C4u32 = 0reservedProven
FLVER2 texture binding32 bytes56% known
ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04u32path offsetProven
0x44u32texture kind name offsetProven
0x88float2scaleProven
0x101u8U tiling typeSourced0 or 1, and equal to the byte at 17 on every binding of both installs
0x111u8V tiling typeSourced0 or 1, equal to the byte at 16
0x122bytes = 0reservedProven
0x1412float3unknown valuesUnknown
Tiling code Reference-reader name Confidence
0 None Sourced · SoulsFormatsNEXT
1 Repeat Sourced · SoulsFormatsNEXT
2 MirrorRepeat Sourced · SoulsFormatsNEXT
3 Clamp Sourced · SoulsFormatsNEXT
4 Border Sourced · SoulsFormatsNEXT
5 MirrorOnce Sourced · SoulsFormatsNEXT

Over every material of both installs the string byte count at offset 16 is exactly the value given in the layout: in all 43,435 Sekiro materials (versions 0x20013 to 0x2001A) and all 86,644 Elden Ring materials of versions 0x20013 and 0x2001A. In Elden Ring’s version 0x20014 SpeedTree files it is two bytes larger per bound texture in 684 of their 685 materials. Proven · every material of both archive sets The material index at offset 24 equals the material’s position in 40,115 of Sekiro’s 43,435 materials and 71,032 of Elden Ring’s 87,329; where it differs it is smaller (0 in 737 and 6,129 of them). Proven · every material of both archive sets The reserved word at 28 is zero in all of them. Proven · every material of both archive sets

Of the 241,231 Sekiro and 570,781 Elden Ring texture bindings, the two tiling bytes are 0 and 0 on 173,927 and 558,506 bindings with an empty path, 1 and 1 on 67,254 and 10,336 with a path, and 0 and 0 on the 50 and 1,939 with a path that are left: no binding has different bytes, and no binding has a code above 1, so the codes 2 to 5 of the table are not used by any shipped binding. Proven · every binding of both archive sets The bytes behave as one flag that is set for most bound textures, not as two independent addressing modes. Inferred

A nonempty FLVER texture path overrides the definition’s fixed path for the matching kind. Elden Ring’s metaparam can supply a system texture for an otherwise unbound numbered slot; captured uploaded mip hashes on Stormveil DetailBlend draws match those defaults. Observed

only in Sekiro Sekiro’s definitions leave slots empty too, and /other/systex.tpf.dcx holds the system textures that would fill them: SYSTEX_Dummy_ with the suffixes a, m, r, n, em, g, d, v, 1m and 3m, plus SYSTEX_WHITE and SYSTEX_BLACK. Observed · Sekiro

Texture Format Contents Confidence
SYSTEX_Dummy_a BC1, sRGB every texel sRGB 128 (about 0.216 linear) Observed · Sekiro
SYSTEX_Dummy_m BC4 (ATI1) zero Observed · Sekiro
SYSTEX_Dummy_r sRGB grey, sRGB 49 Observed · Sekiro
SYSTEX_Dummy_n BC7 a normal map Observed · Sekiro

A Sekiro pixel program names each material texture it samples <family>_snp_<k>_Texture2D_<N> in its reflection, at the register it reads it from, and the material definition names the same texture <family>_snp_Texture2D_<N>_<role> (M_Multiple__snp_0_Texture2D_8 and M_Multiple__snp_Texture2D_8_AlbedoMap_0). Every texture with a path that the drawn materials of five frames at the Ashina Castle gate give their programs (the FLVER binding of that kind when its path is not empty, else the definition’s) is bound at the register so named: 16,211 of 16,211. Observed · Sekiro · five captured frames, draws tied to their FLVER mesh and material by the mesh buffer

What an empty slot gets depends on the material family. The character families bind a system texture of the slot’s role; the layered map families bind one of two textures of one texel that the engine makes at start-up, not a file. Observed · Sekiro · 829 empty slots of five captured frames

Family and role of the empty texture Bound texture Confidence
Character families (Character_AMSN and its [DetailBlend], SSS, [Cat_Eye] and AN_Blend_AMSN_[Fresnel] variants, Fur_NTC): 510 slots; albedo 16×16 BC1 sRGB whose bytes are SYSTEX_Dummy_a’s (the same bytes as SYSTEX_Dummy, _em and _g) Observed · Sekiro
Character families, normal SYSTEX_Dummy_n Observed · Sekiro
Character families, metallic 16×16 BC4 whose bytes are SYSTEX_Dummy_m’s (the same as _1m) Observed · Sekiro
Character_AMSN_SSS, reflectance 16×16 BC1 of zeros, the bytes of SYSTEX_BLACK and SYSTEX_Dummy_3m (and of several maps’ black textures) Observed · Sekiro
Layered map families (M[Multiple], M[MultipleGround], WallTest_dobei): 313 slots of albedo, normal and mask a 1×1 B8G8R8A8_UNORM texture of white (255, 255, 255, 255) Observed · Sekiro
MetallicTex, metallic (6 slots) a 1×1 B8G8R8A8_UNORM texture of opaque black (0, 0, 0, 255) Observed · Sekiro

The engine makes three such textures in its first frame: white, opaque black and transparent black (0, 0, 0, 0); the last is bound to every draw at register 58 of the vertex and pixel programs. Observed[resources created in frame 1 of the captured runs]{games=“sekiro”} Where two system textures hold the same bytes, the bytes alone do not say which file the engine loaded; the dummies sit among the other systex textures in creation order. Inferred · Sekiro The 4.55 detail gain of the character detail programs is the reciprocal of the albedo dummy’s 0.216, which these draws bind. Inferred · Sekiro

Elden Ring’s frames show both kinds too. Over the ten Stormveil frames the textures of 16 by 16 texels or fewer that drawn programs read at their Texture2D_N registers fall into two groups. Observed[ten captured frames, 3,000 to 3,600 bindings of Texture2D_N registers a frame]{games=“elden-ring”} The first holds the same bytes as Sekiro’s file dummies: a BC1 texture of SYSTEX_Dummy_a’s bytes in 16×16 (five mips) or 4×4 (three mips) form, a zero BC4 texture of SYSTEX_Dummy_m’s bytes, a BC7 normal map of SYSTEX_Dummy_n’s bytes in 8×8 or 4×4 form, and the _3m and _BlackAlpha_a textures. The bound bytes are the same in the Sekiro frame and the Elden Ring frames, and each one is bound only at slots whose metaparam default texture has that file’s name (Dummy_a at the albedo slots, Dummy_n at the normal slots, and so on). Observed · Elden Ring, Sekiro · Elden Ring frames m10 to m17 and the Sekiro idol frame, content keys compared The 4×4 forms are the same file resident with its first two mips dropped. Inferred · Elden Ring The second group is a 1×1 R8G8B8A8_UNORM texture of white (255, 255, 255, 255); the frame also holds 1×1 textures of opaque black, of flat normal (128, 128, 255, 255) and of transparent black, the same four engine textures as Sekiro’s three plus the normal. Observed · Elden Ring · ten captured frames The white one is bound at the Mask1Map slot of M[AMSN_V]_Grass2 (61 of 101 bindings) and P[ChrCustomize][FaceHair] (30 of 30), while the same Mask1Map slots of other families (M[AMSN], M[AMSN_V][Mb3][Ov_N2_T]) take the file dummy Dummy_1m, so the default’s name does not decide which kind a slot gets. Observed · Elden Ring · ten captured frames Elden Ring’s layered map families (M[AMSN_V][Mb2], [Mb3], [Mb4] and [Ov_*]) bind the file dummies (Dummy_n, c80_SYSTEX_RED and others) where Sekiro’s M[Multiple] binds white. Observed · Elden Ring · ten captured frames Sekiro’s idol frame draws 24 material families; the 14 that bind a texture of 16 texels or fewer are those of the tables above, and the other 10 (landscape, sky, emissive, translucency and mesh-decal families) bind only textures of 64 texels or more, so they show no empty slot. Observed · Sekiro · one captured frame

Which families take a file dummy and which an engine texture?

Whether a small texture is an empty slot filled in or a small texture the material names cannot be told from a frame alone: the FLVER binding of each draw’s mesh is not joined to the Elden Ring draws, so the 1×1 white at Mask1Map of grass and face hair may be the engine’s fill or a texture the material binds. The rule that picks between the kinds is not read from the code.

The N in Texture2D_N identifies a logical texture across material and program names. It is distinct from the metaparam slot/register: Sekiro’s DetailBlend base albedo Texture2D_7 is at register 1, while detail albedo Texture2D_2 is at register 7. Observed · Sekiro

only in Elden Ring Elden Ring’s captured tiling rows are likewise indexed by the metaparam slot, not by N. Observed · Elden Ring Its programs are named the same way, and the register a program reads Texture2D_N from is the slot register byte of the metaparam texture whose name holds that N, not N itself. In the ten recorded Stormveil frames every texture register of every drawn program that names a Texture2D_N (117 to 122 programs and 426 to 449 textures a frame) equals the metaparam slot of that N in the program’s own bundle, with no exception, while N equals the register for only 122 of the 442 textures of one frame (Texture2D_7 is at t10, Texture2D_11 at t2). Observed[ten captured frames at the Stormveil gate, each drawn program’s reflection against its bundle’s metaparam]{games=“elden-ring”} Reading N as the register, as an earlier reading of the G-buffer programs did, is wrong for Elden Ring. Observed · Elden Ring Sekiro’s frame at the Ashina idol is alike: N equals the register for 42 of the 273 textures of its 60 programs. Observed · Sekiro · one captured frame

The FLVER record layouts below are checked in the whole-install model population: 14,459 Sekiro files and 22,050 reference-readable Elden Ring files. The reference refuses another 119 Elden Ring SpeedTree files; those have a separate stream check. One Sekiro archive entry fails before model inspection and is excluded. Proven · whole-install reference population

GX lists preserve material extension payloads beside the ordinary texture bindings. Sourced · SoulsFormatsNEXT

GX item header12 bytes67% known
ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04bytesidentifierProven
0x44u32versionSourced
0x84u32total item lengthProvenIncludes this header for ordinary items.

The terminator identifier is 0x7FFFFFFF or 0xFFFFFFFF, with version word 100 and zero payload padding. Ordinarily its length includes the 12-byte header; where the FLVER header’s low word at 0x68 is 5, it counts padding alone, as on Elden Ring SpeedTree files. Observed

71,699 Sekiro and 114,256 Elden Ring GX items occur, under 22 and 18 GXnn identifiers plus GXMD (33 and 44 versions) and, in Elden Ring, GXUD (119 items of 1,480 to 3,088 bytes). Proven · every material of both archive sets An identifier and version pair has one payload length, except GXMD 314 in Sekiro and GX14 101 (16 and 28 bytes), GXMD 131, 133, 141 and 426 and GXUD 101 in Elden Ring. Proven · every material of both archive sets

The community editor names the words of its GXnn descriptors. Every GXnn identifier and version of the installs has one except GX18 version 101 (565 Elden Ring items of 4 bytes). Observed The names fit the values for the three checked by range: the first word of GX03 100 (emissive intensity) is 0.7 to 3.32 over four distinct values in Sekiro and 0.6 or 1.0 in Elden Ring; the first word of GX05 100 (translucency scale) is 1.0 or 10.0 in Sekiro and always 1.0 in Elden Ring; the first three words of GX14 101 (albedo colour) are within 0 to 1 and the fourth (its multiplier) within 0.8 to 1.0 in Sekiro and 0.79 to 1.36 in Elden Ring. The remaining words of GX03 and GX05 are zero in every item. Observed

The community’s descriptors give every word of an item a name and a type (an integer, a float, or one the editor leaves unnamed). Sourced · Smithbox The items below occur in the installs; all other words are 0 in every item unless the row says otherwise. Sekiro has 71,699 items and Elden Ring 114,256 over their materials. Proven · every material of both archive sets

Item Words the editor names Sekiro Elden Ring Confidence
GX03 100 [Emissive] EmissiveIntensity (float) 252 items, 0.7 to 3.32 in 4 values 9 items, 0.6 or 1 Observed
GX05 100 [Translucency] TranslucencyScale (float) 2,062 items, 1 or 10 5,140 items, 1 Observed
GX14 101 [AlbedoColor] red, green, blue, multiplier (floats) 206 items, colour 0 to 1, multiplier 0.8 to 1 735 items, colour 1, multiplier 0.79 to 1.36; 684 store 16 bytes (the four named words), 51 the full 28 Observed
GX09 100 Parallax1 and Parallax2 offset and middle height 3 items, offset 0, middle height 0.5 1 item, the same Observed
GX07 104 The water settings: three normal and two diffuse scroll speeds, Fresnel minimum and maximum, reflection and refraction offsets, depth fog colour, density and transparency, two fade ranges 2 items (the M[ARSN]_Water_3normaltet river and waterfall of one map): normal V speeds -0.02 to -0.12, refraction offset 0.04, fog colour (0, 0.118, 0.118, 0.8), density 1, transparency 0.01, fade ranges 0.1 none Observed · Sekiro
GX04 100 Displacement mapping and tessellation mode (integers 0 or 1), tessellation factors, Back Face Cull, distances, bias, height (floats) 6,480 items 155 items Observed
GX20 to GX34 Per texture type, a U and a V scroll speed (floats) GX20 1,116 items, GX22, GX24, GX26 912, GX32 252, GX30 23, the rest 3 GX20 233, GX22, GX24, GX26 183, GX30 2, GX32 9 Observed
GX00 100 to 102 Decal and [PaintDecal] SlotNo (100); version 102 names none, its first four words are integers (0 to 3, 0 or 1, 0 to 2, -1 to 3) 43,237 items 86,390 items Observed
GX06 101, GX15 100, GX39 100, GX80 100, GX81 100 SnowMaskIntensity; unnamed floats; Soft Volume; damage rate and tiling 2, 382, 7, 6 and 6 items GX15 857 items Observed

Names that the values do not fit: GX04’s Back Face Cull is a float taking 0, 0.5 and 5 in Sekiro and 0.5 in Elden Ring, and its distance and factor words take 1 and 5. Observed The parallax-occlusion items (GX02, GX12) and the others the editor names but neither install stores (GX01, GX08, GX13, GX35 to GX37) do not occur. Proven · every material of both archive sets

GXMD contains a 32-bit item count followed by typed ID/value entries, without a trailing sentinel. IDs can appear in any order. Sekiro and Elden Ring can add a type-0 boolean record sharing the preceding value’s ID; its meaning is unresolved. Sourced · RunDevelopment

GXMD item prefix8 bytes0% known
ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x04i32item IDSourced
0x44i32value typeSourced
Type Following value Confidence
0 One boolean word, 0 or 1; optional flag for an existing ID Sourced · RunDevelopment
1 One float Sourced · RunDevelopment
2 Two floats Sourced · RunDevelopment
3 Three floats Sourced · RunDevelopment
11 Five floats Sourced · RunDevelopment

For the inspected Sekiro MetallicValue and MetallicValue_MeshDecal shader families, GXMD version 123 item 237 corresponds to the scalar named snp_0_float_0_0; their G-buffer programs read cb2[20].x for the metallic mixture. This association is not established for other shader families or flagged values. Observed · Sekiro

What do all GX payloads and trailing texture floats mean?

The structural records do not establish the semantics of every extension or the three floats at texture offset 20. They remain raw values rather than universal shader parameters. Unknown