Lightdef Asset: Difference between revisions

From COD Engine Research
 
No edit summary
Line 8: Line 8:
[[Category:BO1]]
[[Category:BO1]]
[[Category:BO2]]
[[Category:BO2]]
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.
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 ==
== Call of Duty 4 & World at War & Modern Warfare 2 & Black Ops 1 & 2 ==
#pragma pack(push, 4)
<syntaxhighlight lang="cpp">
struct GfxLightImage
#pragma pack(push, 4)
{
struct GfxLightImage
  GfxImage *image;
{
  char samplerState;
  GfxImage *image;
};
  char samplerState;
#pragma pack(pop)
};
#pragma pack(pop)
struct GfxLightDef
 
{
struct GfxLightDef
  const char *name;
{
  GfxLightImage attenuation;
  const char *name;
  int lmapLookupStart;
  GfxLightImage attenuation;
};
  int lmapLookupStart;
};
</syntaxhighlight>
lmapLookupStart is a constant value for all lightdefs. Only name and the attenuation change.
lmapLookupStart is a constant value for all lightdefs. Only name and the attenuation change.
== Modern Warfare 3 & Ghosts ==
== Modern Warfare 3 & Ghosts ==
#pragma pack(push, 4)
<syntaxhighlight lang="cpp">
struct GfxLightImage
#pragma pack(push, 4)
{
struct GfxLightImage
  GfxImage *image;
{
  char samplerState;
  GfxImage *image;
};
  char samplerState;
#pragma pack(pop)
};
#pragma pack(pop)
struct GfxLightDef
 
{
struct GfxLightDef
  const char *name;
{
  GfxLightImage attenuation[2];
  const char *name;
  int lmapLookupStart;
  GfxLightImage attenuation[2];
};
  int lmapLookupStart;
};
</syntaxhighlight>
The MW3 lightdef uses 2 attenuations, so the current source format will not work.
The MW3 lightdef uses 2 attenuations, so the current source format will not work.
== Source Format ==
== Source Format ==

Revision as of 00:08, 16 February 2014

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

#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

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

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

The MW3 lightdef uses 2 attenuations, so the current source format will not work.

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.