Difference between revisions of "Materials (Metroid Prime 3)"

From Retro Modding Wiki
Jump to: navigation, search
(Material Format)
(PASS)
Line 127: Line 127:
 
|-
 
|-
 
| <code>DIFF</code>
 
| <code>DIFF</code>
| Commonly used for lightmaps, can be used interchangeably with <code>CLR</code> however.
+
| Lightmap
 
|-
 
|-
 
| <code>BLOL</code>
 
| <code>BLOL</code>
| Gaussian Blur lightmap, unknown how to apply properly.
+
| Bloom lightmap
 
|-
 
|-
 
| <code>CLR </code>
 
| <code>CLR </code>
| Diffuse map, identical to <code>DIFF</code>.
+
| Diffuse map
 
|-
 
|-
 
| <code>TRAN</code>
 
| <code>TRAN</code>
Line 139: Line 139:
 
|-
 
|-
 
| <code>INCA</code>
 
| <code>INCA</code>
| Emissive maps
+
| Emissive map
 
|-
 
|-
 
| <code>RFLV</code>
 
| <code>RFLV</code>
| Specular map, oddly seems to use the same texture as CLR/DIFF in most cases.
+
| Specular map
 
|-
 
|-
 
| <code>RFLD</code>
 
| <code>RFLD</code>
| Reflection/Sphere maps
+
| Reflection/sphere map
 
|-
 
|-
 
| <code>LRLD</code>
 
| <code>LRLD</code>
Line 160: Line 160:
 
|-
 
|-
 
| <code>XRAY</code>
 
| <code>XRAY</code>
| Sphere map for X-Ray models, behaves in the same manner as RFLD, usually with a mode 0 UV animation.
+
| Sphere map for X-Ray models; similar to RFLD
 
|}
 
|}
  

Revision as of 23:35, 13 May 2015

The format for materials saw a dramatic overhaul in Metroid Prime 3. The format is seen in both the CMDL and MREA formats and is identical in both. This particular material format appears in Metroid Prime 3: Corruption and Donkey Kong Country Returns.


Morphball wirerender.png This file format needs more research
Need to find TEV values for each subsection type


Material Set Format

Materials come as part of a set; although most files will only have one set, some CMDLs will have more, as indicated by a count value in the header. The set format is merely a 32-bit count value followed by that number of materials, with each material beginning with a 32-bit size value.

Material Format

Every material begins with a 0x1C-byte header, followed by a number of subsections. The header is structured as follows:

Offset Type Size Description Notes
0x0 u32 4 Material Flags Only bottom 17 bits are valid
0x4 u32 4 Group index Denotes groups of materials that share the same settings, but different textures.
0x8 u32 4 Unknown Value is possibly unused; the material loading code seems to skip it
0xC u32 4 Vertex attribute flags Functionality is identical to Metroid Prime 2
0x10 u32 4 Unknown Value is possibly unused; the material loading code seems to skip it
0x14 u32 4 Unknown
0x18 u32 4 Unknown
0x1C End of header

Subsections

The rest of the material data is made up of a number of subsections. These subsections generally set different texture slots, as well as other parameters like Konst colors and material opacity. There's no count for the number of subsections; it needs to be read in using a while loop. The "END " section denotes the end of the material.

The order of the subsections doesn't matter. One material can only have one of each type of subsection; if there's any additional ones, they will overwrite the previous ones.

There are three subsection types (aside from END): PASS, CLR, and INT. Each of these types has a number of subtypes.

PASS

Offset Type Size Description Notes
0x0 u32 4 PASS subsection size
0x4 char[4] 4 Section subtype fourCC See below for possible subtypes
0x8 u32 4 Unknown Only bottom 5 bits are valid
0xC TXTR 8 Texture ID
0x14 u32 4 UV Source Only bottom 4 bits are valid
0x18 u32 4 UV animations size Needs verification; only bottom 8 bits are valid

List of possible PASS subtypes:

Type Description
DIFF Lightmap
BLOL Bloom lightmap
CLR Diffuse map
TRAN Greyscale opacity map; white indicates transparent, black indicates opaque (Retro is backwards)
INCA Emissive map
RFLV Specular map
RFLD Reflection/sphere map
LRLD See RFLD
LURD See RFLV
BLOD See BLOL
BLOI See BLOL
XRAY Sphere map for X-Ray models; similar to RFLD

CLR

Offset Type Size Description Notes
0x0 char[4] 4 Section subtype fourCC See below for possible subtypes
0x4 u32 4 Color value 32-bit RGBA value

List of possible CLR subtypes:

Type Description
CLR
DIFB

INT

Offset Type Size Description Notes
0x0 char[4] 4 Section subtype fourCC See below for possible subtypes
0x4 u32 4 Value Actually an 8-bit value; the top 24 bits are ignored

List of possible INT subtypes:

Type Description
OPAC Sets the opacity of the entire material
BLOD
BLOI
BNIF
XRBR