shader_transparent_plasma

🚧 This incomplete article needs help! Please submit tips and info by pull requests or issues or contacting a maintainer.

Plasma shaders are used for energy shield effects. They are mostly referenced as the modifier shader of an object like a biped, though the Sentinel biped instead references it via its gbxmodel (presumably because it uses a custom shape).

Known issues

The PC port of Halo includes a number of known renderer issues. On some PC hardware, and always in MCC, plasma shaders render incorrectly:

Notice how some areas of the plasma are cut off.

After the noise maps are sampled and blended, the resuling value is supposed to be mapped to transparent at high and low values and to opaque at midtones. Something about the shader math at this step is platform-dependent and results in half the values mapping to fully transparent instead of a blend.

The workaround is to duplicate the plasma shader and apply it in two layers. The duplicate shader should be identical except for using inverted noise bitmaps.

Structure and fields

This tag inherits fields from shader which are not shown here. See the parent's page for more information. The following information is unique to the shader_transparent_plasma tag.

Field Type Comments
intensity source enum
Option Value Comments
none 0x0
a out 0x1
b out 0x2
c out 0x3
d out 0x4
intensity exponent float
  • Default: 1
offset source enum?
offset amount float
  • Unit: world units
offset exponent float
  • Default: 1
perpendicular brightness float
  • Min: 0
  • Max: 1
perpendicular tint color ColorRGB
Field Type Comments
red float
green float
blue float
parallel brightness float
  • Min: 0
  • Max: 1
parallel tint color ColorRGB?
tint color source enum
Option Value Comments
none 0x0
a 0x1
b 0x2
c 0x3
d 0x4
primary animation period float
  • Unit: seconds
  • Default: 1
primary animation direction Vector3D
Field Type Comments
i float
j float
k float
primary noise map scale float
primary noise map

TagDependency: bitmap

secondary animation period float
  • Unit: seconds
  • Default: 1
secondary animation direction Vector3D?
secondary noise map scale float
secondary noise map

TagDependency: bitmap

Acknowledgements

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

  • crow (Renderer issue workaround)
  • Kavawuvi (Invader tag definitions)
  • MosesOfEgypt (Tag structure research)