If it's any help, the engine contains "region" information. The granularity of these regions differs. There are also Locations, which are even smaller, including interiors.
The entire map is covered in regions at least:
They're named nonsensically though, after the developers which the regions were assigned to...
==========
==========
On the subject of height-based fog... it made me think about depth-based light attenuation for underwater. OBGE Water did it very nicely:
I assume you have both the water plane height and camera height in game units.. they are attainable if not.
As far as other underwater effects go, I imagine screen-space reflections on the underside of the water surface is feasible. Example:
You already have the SS reflection code for specular stuff, no?
Also present in that above image is a high amount of rim lighting:
Skyrim engine already has a rim lighting shader, which is turned on with a shader flag in the NIF format, but I'm not sure it's something that can be turned off or on dynamically. I do know that you detect shader flags for many features, like what to apply SSS to.
Skyrim's rim lighting does reference a rim texture however. Though maybe in the absence of a texture a constant term is applied. So maybe rim lighting can just generally be applied from the normals. Obviously the rim lighting comes from how water scatters the light.. A cheap way of doing it could also be a bright directional ambient pointing +Z. Or hijacking your IBL implementation.
Such a thing wouldn't really be needed for above water, since the caustics pretty much takes care of that.
=========
I did see you mention some time ago about applying wetness effects, but needing to know materials so that the wetness shader could be applied differently based on material...
The NIF format contains material information, and Skyrim includes this for pretty much all objects. These are the materials which Havok uses to determine collision sound effects, whether bows stick, etc. Even the terrain has this information, e.g. each time your character takes a step, the foot collision is returning the material of the terrain.
An excerpt:
FULL LISTCode: Select all
<enum name="SkyrimHavokMaterial" storage="uint"> <option value="365420259" name="SKY_HAV_MAT_LIGHT_WOOD">Light Wood</option> <option value="131151687" name="SKY_HAV_MAT_BROKEN_STONE">Broken Stone</option> <option value="398949039" name="SKY_HAV_MAT_SNOW">Snow</option> <option value="428587608" name="SKY_HAV_MAT_GRAVEL">Gravel</option> <option value="500811281" name="SKY_HAV_MAT_WOOD">Wood</option> <option value="591247106" name="SKY_HAV_MAT_SKIN">Skin</option> <option value="732141076" name="SKY_HAV_MAT_BARREL">Barrel</option> <option value="873356572" name="SKY_HAV_MAT_ICE">Ice</option> <option value="1024582599" name="SKY_HAV_MAT_WATER">Water</option> <option value="1288358971" name="SKY_HAV_MAT_SOLID_METAL">Solid Metal</option> <option value="1486385281" name="SKY_HAV_MAT_MUD">Mud</option> <option value="1848600814" name="SKY_HAV_MAT_GRASS">Grass</option> <option value="2168343821" name="SKY_HAV_MAT_SAND">Sand</option> <option value="2229413539" name="SKY_HAV_MAT_HEAVY_METAL">Heavy Metal</option> <option value="2518321175" name="SKY_HAV_MAT_DRAGON">Dragon</option> <option value="2974920155" name="SKY_HAV_MAT_ORGANIC">Organic</option> <option value="3070783559" name="SKY_HAV_MAT_HEAVY_WOOD">Heavy Wood</option> <option value="3106094762" name="SKY_HAV_MAT_DIRT">Dirt</option> <option value="3739830338" name="SKY_HAV_MAT_GLASS">Glass</option> <option value="3741512247" name="SKY_HAV_MAT_STONE">Stone</option> <option value="3839073443" name="SKY_HAV_MAT_CLOTH">Cloth</option> </enum>
... I'm not sure if the above values are necessarily going to be the raw values in the game engine, but the values are definitely stored in the NIF format, and were decoded by the NifSkope team.
So, if this information were attainable you could make both objects and terrain look wet.
========
Instead of the fake "self reflections" color, have you considered/tried to implement light scattering and extinction? Instead of the solid color for the non-reflective parts, the light contribution could be computed based on the light and eye vectors, water color, etc. I am not certain though if you are able to retrieve the depth of the water along the eye vector, sun vector, or normal vector. I imagine so, if you were able to blur the intersection of the water plane and terrain... Though in the absence of these vectors, a simple height-based "fog" could return a non-constant term for the "self reflection" but it wouldn't be very accurate.
^^ Also the above image has a "sparkle" shader, which I assume operates like any other sparkle shader, by randomly overlaying sparkle sprites over bright specular.
You can see a lot of these effects in this video.
(Depth-based light attenuation, heavy rim lighting, light scattering/extinction, sparkle shader)
=========
=========
Lastly, has Skyrim engine been stripped completely of POM? Skyrim actually was a downgrade in several ways, removing POM and object water reflections. I know regular parallax mapping was barely even working, since you fixed that. According to the NIFs for Skyrim, there are many references to parallax occlusion...
Parallax:
Parallax Occlusion:
I have tried the Parallax Occlusion settings, and they do absolutely nothing visible in game, regardless of the Scale / Num Passes settings. I of course expected as much.