I've attempted to implement terrain lighting several times - first with a shader with TV3D semantics and progressive LOD, then with splatting and LOD, then without splatting and just LOD, then finally without LOD.
Here's some poorly organized clips of my test code:
IDMat = m_Material->CreateLightMaterial(1, 1, 1, 1, 0.05f, 0.3, "basic material");
m_WorldLandscape->GenerateTerrain("texture/height.png",cTV_PRECISION_HIGH,64,64,0,0,0,true);
m_WorldLandscape->EnableLOD(true, 1024, cTV_PRECISION_VERY_LOW, 128, true);
m_WorldLandscape->SetProgressiveLOD(true);
m_WorldLandscape->SetTextureEx(0,IDSand,-1);
m_WorldLandscape->SetCullMode(cTV_BACK_CULL);
m_WorldLandscape->SetMaterial(IDMat,-1);
m_WorldLandscape->SetLightingMode(cTV_LIGHTING_MANAGED, 1, 6);
All results using progressive LOD properly rendered the first (in order of creation) four point lights, as well as my directional light (I didn't try with different amounts of directional lights). I had used the SetLightingMode function to increase the amount of active lights on the object to an arbitrarily high number as well as simply 6 point lights. No matter what, it always only showed my first four created point lights, even though level geometry responded to all 7 that I had created.
Without LOD, lighting just didn't work.
I think this is a bug, and yes, I did use materials. From what I've seen thus far, TV3D has a very sound lighting architecture, but this problem (assuming I didn't make a dumb mistake, which is very possible) is a real pain and essentially nullifies the benefit of managed lighting for those who use terrain. Until anybody figures this out, I guess I'll be forced to sort arrays aggressively.