I've seen several questions on here about what Ambient Occlusion is, on a high level, but not much getting into the mathematics. I am including links to the relevant links I've found on the subject, but I would very much appreciate someone filling in the gaps, and tying it all together.
[ Updated: I am aware that Ambient Occlusion, as it was used in Blender's internal render engine for global illumination has long been passé. I'm talking about something I'll call "local Ambient Occlusion". While I'm mostly interested in procedural textures, it's easier to explain my intent with a high-poly and low-poly model pair. Imagine baking both models AO into separate textures on the low-poly model. Now divide the AO texture from the high-poly model by the AO texture from the low-poly model. What you should get is the AO texture details from surface of the low-poly model without the global AO from the low-poly model itself. You can think of this as similar in purpose to a normal map or a bump map. In this question I am referring to this "local Ambient Occlusion" map to give additional detail not found in the geometry, rather than anything to do with global illumination.]
Firstly, on a non-Blender specific but mathematical level, what are Ambient Occlusion maps, Directed Ambient Occlusion Maps and Cavity Maps, and how are they different from each other numerically and computationally? Here is the most detailed article I found on distinguishing AO maps from cavity maps, but it seems a bit muddy on details. This article did a bit more to differentiate AO maps from Directional AO maps but doesn't mention cavity maps. I know that AO Maps are used with Cavity Maps, and Directed AO Maps replace conventional AO Maps, but beyond that things seem a bit fuzzy.
Secondly, how would I go about baking each of these from a high poly to a low poly model in Blender (in Cycles)? Several questions ask about baking AO Maps, but I haven't seen Directional AO maps or Cavity maps addressed at all.
Lastly, computationally, how would I go about incorporating support for AO maps, Directional AO maps and Cavity maps into a PBR Uber-shader (such as one similar to what Andrew Price describes in his two part "Making Realistic PBR Materials" series)... Bonus points if you can include support for (parallax) distortion maps too.... My understanding is that the cavity map can be easily supported by using it to mix the diffuse shader color with black, but I'm unsure of the other two, nor the distortion map.
Thanks in advanced for all your help.