Lightdef Asset

From COD Engine Research

The lightdef asset contains information pertaining to individual lights (not global lights). This asset is very simple and hasn't changed very much from the Call of Duty 4 Alpha to Ghosts.

Call of Duty 4 & World at War & Modern Warfare 2 & Black Ops 1 & 2 & 3

#pragma pack(push, 4)
struct GfxLightImage
{
  GfxImage *image;
  char samplerState;
};
#pragma pack(pop)

struct GfxLightDef
{
  const char *name;
  GfxLightImage attenuation;
  int lmapLookupStart;
};

lmapLookupStart is a constant value for all lightdefs. Only name and the attenuation change.

Modern Warfare 3 & Ghosts & Advanced Warfare

#pragma pack(push, 4)
struct GfxLightImage
{
  GfxImage *image;
  char samplerState;
};
#pragma pack(pop)

struct GfxLightDef
{
  const char *name;
  GfxLightImage attenuation;
  GfxLightImage cucoloris;
  int lmapLookupStart;
};

Source Format

The lightdef source files are essentially extensionless text files located at "raw/lights". There is 1 char for the samplerState and a null terminated string for the name of the image asset to use. For example, here is the "candle" asset from Call of Duty 4.

bfalloff_candle

Keep in mind that the file does contain a null character on the end that cannot be represented. The "b" is the samplerState.