I don't know what format yall are going to use for your heightmaps,
but I suggest you standardize on a format the also contains the
normalized depth component, example:
channels:
R(0) Nx (Normal X component)
G(1) Ny (Normal Y component)
B(2) Nz (Normal Z component)
A(3) Dp (normalized depth)
You can also use a theta/phi system for the normal (score an
extra channel for something else), but that means that there's
going to be more GPU calcs.
The normalized depth component can be used for such shader
techniques as relief mapping (self-shadowing. It's also handy
for the simpler parallax shading technique, which is standard
normal mapping, but with a texture offset based on the depth
component and view vector. You can also use the depth
component for displacement mapping.
I've recently added lua client-side scripting to the BZFlag game.
Yall might benefit from the shaders and material management
scripts that are being used there (join the test server, save the
world). Here's a screenshot of plain relief mapping (haven't added
lua rendered shadow mapping, yet):
P.S. the primary texture format that I use for opaque materials is RGBS(specular)