So to add fog to my scenes, I add Volumetric fog. Go to Create–Volume Primative — Cube.
You will see “box1” pop up in outliner. You will scale the box to size you need it for your scene. The center of the cube is where the fog will be the thickest.
In the attribute shape node of it, under Render Stats, you will want to turn on “Volume Samples Override”.
This fog is a true volumetric fog and supports raytraced shadows. It will create shafts of light rays in your scene.
The fog volume creates it’s own shader. You will want to turn on “Illuminated” this will allow your fog to be light by your light source (you can choose to not have the light illuminate it).
When rendering you will want to create a new scene file to allow your scene to render out the fog passes. You will create a lambert shader that has it’s color turned to black. Then you will switch under “matte opacity” from normal to Black Hole. This will allow your geometry to render out black in RGB and alpha causing a cutout while your fog will render white.
Render out your various fog passes. You can create multiple fog effects and render out as it’s own pass to then composite afterwards. These render very fast.