Fog tags describe the colour and density properties of fog which can be applied to BSP fog planes using Sapien.

Non-planar atmospheric fog does not use a fog tag, and is instead controlled by the sky tag.

Known issues

Due to a renderer regression, the screen layers effect of these tags does not render on H1CE or H1PC, nor does it draw over the skybox unless atmosphere dominant is set. This tag renders correctly in H1X and H1A.

As of MCC season 7, there is a new issue where fog does not render at the right density over models and causes them to stand out especially in areas of high fog density.

Structure and fields

FieldTypeComments
flagsbitfield
FlagMaskComments
is water0x1

Determines if the volume behind (anti-normal to) this fog plane is a "water fog volume", which causes it to be considered underwater. This affects vehicles' ability to travel over water.

atmosphere dominant0x2

As documented in Guerilla, this was originally used to fix polygon popping when atmospheric fog density reached 1.0 within the confines of the map and interacted with fog planes. It is only enabled in c10's swamp fog tag.

This flag can be used as a workaround on H1PC and H1CE to fix fog not rendering over the sky, a renderer bug introduced during the PC port. Some Chimera builds automatically flip this flag at runtime. It is not necessary to use this flag as a visual workaround in H1A because fog rendering has been fixed.

fog screen only0x4

Unknown purpose. This flag was not set in any original Halo maps.

maximum densityfloat
  • Min: 0
  • Max: 1

Scales how dense the fog is at its opaque distance and depth, where 1 is the fully opaque color and 0 is transparent.

opaque distancefloat
  • Unit: world units

The distance from the player where the fog reaches its maximum density. This value must not be negative or zero (causes a crash in pre-H1A versions).

opaque depthfloat
  • Unit: world units

The distance from the fog plane where the fog reaches its maximum density. This value must not be negative or zero (causes a crash in pre-H1A versions).

distance to water planefloat
  • Unit: world units
colorColorRGB
flags 1bitfield
FlagMaskComments
no environment multipass0x1
no model multipass0x2
no texture based falloff0x4
layer countuint16
distance gradientBounds
  • Unit: world units
FieldTypeComments
minfloat
maxfloat
density gradientBounds
  • Min: 0
  • Max: 1
FieldTypeComments
minfloat
maxfloat
start distance from fog planefloat
  • Unit: world units
screen layers colorColorARGBInt

Sets the colour of the screen layer volumetrics particles. Note that this effect only works in H1X and H1A.

RGB Color with alpha, with 8-bit color depth per channel (0-255)

FieldTypeComments
alphauint8
reduint8
greenuint8
blueuint8
rotation multiplierfloat
  • Min: 0
  • Max: 1
strafing multiplierfloat
  • Min: 0
  • Max: 1

Scales the parallax movement of the fog screen layer during strafing.

zoom multiplierfloat
  • Min: 0
  • Max: 1
map scalefloat
mapTagDependency: bitmap
animation periodfloat
  • Unit: seconds
wind velocityBounds?
  • Unit: world units per second
wind periodBounds?
  • Unit: seconds
wind acceleration weightfloat
  • Min: 0
  • Max: 1
wind perpendicular weightfloat
  • Min: 0
  • Max: 1
background soundTagDependency: sound_looping

Overrides the background sound of the cluster while under the fog plane. This is used for underwater areas.

sound environmentTagDependency: sound_environment

Overrides the sound environment of the cluster while under the fog plane. This is used for underwater areas.

Acknowledgements

Thanks to the following individuals for their research or contributions to this topic:

  • Jakey (Known fog issues in S7 MCC)
  • Kavawuvi (Invader tag definitions)
  • MosesOfEgypt (Tag structure research)