Fog is probably the first volumetric effect implemented using a programmable pixel shader as those became commonly supported by GPUs.
Fog was implemented in hardware (fixed pipeline) and only took distance into account.