I've updated my reshade shader called 'depthhaze', which adds distance blur to a game with an available depth buffer. Besides blurring distant objects (without edge bleed) it now also adds fog based on parameters (like how much, color etc.). It's not a simple depth==fog effect, as that would make skies also very foggy as they're very far away: it currently fogs more around the middle horizontal line of the screen and degrades the amount of fog towards the top/bottom (based on depth of course too). This gives a nice added 'haze' in the distance. I've uploaded two images, one without any effect (vanilla freecam shot in the witcher3) and one with some fog+distance blur enabled:
vanilla:
with depthhaze (fog/distance blur)
Source for shader:
reshade 1.1:
https://github.com/FransBouma/OtisFX/tree/master/src
Get OtisFX/DepthHaze.fx
Place it in your Reshade\OtisFX folder (create it if it's not there)
Rename it to OtisFX\DepthHaze.h
Get OtisFX.cfg. Place that in your Reshade folder
Add
#include EFFECT(OtisFX, DepthHaze)
to Reshade\Pipeline.cfg file (below the DoFs)
The code there is in Reshade 2.0 format which hasn't been released yet. I'll see if I can upload a reshade 1.1/1.0 update zip
If you already have depthhaze shader from previous installments, here's a diff gist:
https://gist.github.com/FransBouma/9720df8aea7ec3255bdb
more pix:
http://imgur.com/et18C7B&IwKr2kG&U1R1Kwh&sg5c5JA
It's of course meant to be used in screenshots, not in live gaming, hopefully it's useful.

If you're not sure how to setup things like this, please first get yourself familiar with reshade and its config files.