BLIGHT (File Format)
The BLIGHT (Binary LIGHT) filetype controls lighting effects on characters, karts, items and objects in a track. It is always seen in the posteffect folder inside an U8. This file is not required for a track to load, as there is a default.blight file inside Common.szs.
File Format
File Header
The following table describes the version 2 LIGHT header.
Offset | Type | Description |
---|---|---|
0x00 | String | File magic. Always LGHT in ASCII. |
0x04 | UInt32 | File size. Always 0x5A8 in MKW. |
0x08 | Byte | Version. Always 02 in MKW |
0x09 | Byte[3] | Padding. |
0x0C | UInt32 | Unknown. Always 00 00 00 00. |
0x10 | UInt16 | Number of LOBJs. Always 0x10 in MKW. |
0x12 | UInt16 | Number of Ambient Lights. Always 0x10 in MKW. |
0x14 | Byte[4] | RGBA ambience black color. Always 00 00 00 FF. |
0x18 | Byte[16] | Padding. |
However, one thing to note is that although 16 lights are stored in this file, only 8 can be referenced by the KCL (IDs 00 to 07). This is because the KCL only has three binary digits to reference lights (and 111 in binary = 7).
Light Object data (LOBJ)
The first light object starts at 0x28. These addresses are relative to the start of the object.
Offset | Type | Description | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | String | Section magic. Always LOBJ in ASCII. | ||||||||||||||||||||||||
0x04 | UInt32 | Section size. Always 0x50. | ||||||||||||||||||||||||
0x08 | Byte | Version. Always 02 in MKW, except for loser_demo and draw_demo, in which said value is 01. | ||||||||||||||||||||||||
0x09 | Byte[3] | Padding. | ||||||||||||||||||||||||
0x0C | Byte[4] | Unknown. Always 00 00 00 00. | ||||||||||||||||||||||||
0x10 | Byte | Attenuation angle falloff function
| ||||||||||||||||||||||||
0x11 | Byte | Attenuation distance falloff function. Used together with the attenuation references below. This Desmos graph shows how the three types (blue = gentle, red = steep) behave over distance.
| ||||||||||||||||||||||||
0x12 | Byte | Coordinate system for origin and destination
| ||||||||||||||||||||||||
0x13 | Byte | Light type: 00 = omni light, 01 = directional, 02 = spotlight. Always 01 in Nintendo tracks. | ||||||||||||||||||||||||
0x14 | UInt16 | This value stores the index of the ambient light this light uses. It's also used to link into the LTEX gradient table. | ||||||||||||||||||||||||
0x16 | UInt16 | Bitfield. Always 06 41 (1, 6, 9 and 10) or 06 21 (1, 5, 9 and 10). Unknown values are not included.
| ||||||||||||||||||||||||
0x18 | Float[3] | 3D origin vector. | ||||||||||||||||||||||||
0x24 | Float[3] | 3D destination vector. | ||||||||||||||||||||||||
0x30 | Float | This seems to control how large the color effect is on this light. | ||||||||||||||||||||||||
0x34 | Byte[4] | RGBA light color. | ||||||||||||||||||||||||
0x38 | Byte[4] | Ambient color for BLMAP lighting stages. | ||||||||||||||||||||||||
0x3C | Float | Spotlight cutoff angle | ||||||||||||||||||||||||
0x40 | Float | Attenuation reference distance | ||||||||||||||||||||||||
0x44 | Float | Attenuation reference brightness | ||||||||||||||||||||||||
0x48 | UInt32 | Unused. | ||||||||||||||||||||||||
0x4C | UInt16 | Light Object index used for vector shifting | ||||||||||||||||||||||||
0x4E | UInt16 | Padding | ||||||||||||||||||||||||
0x50 | End of object, start of next |
Ambient Light data
Ambient colors are used by each light object. They are linked by a light.
Offset | Type | Information |
---|---|---|
0x00 | Byte[4] | RGBA ambient light color. |
0x04 | UInt32 | Padding. |
0x08 | End of color, start of next |
All unused ones are 64 64 64 FF (a neutral gray).
Tools
The following tools can handle BLIGHT files:
- Post-Effect Editor, by Wexos
- RiiStudio, by Riidefi
- Wexos's Toolbox, by Wexos