Don't know how this one did it, neither if "running realtime" was a target, but when looking at games such as Crysis, you could research the following topics:
* Terrain render (that is without trees, grass and rocks!)
How to render a LOD grid? How to blend the ground textures (via vertex painting)
* Water rendering
* Objects (trees, rocks, ...) & Instancing
In a jungle, you probably draw the same plants and trees dozens of times. Using VBO's & Instancing could give a big gain here.
* Placement of objects
How to place these objects. Randomly generated? Or done by an artist in a editor? As for games, they usually let the editor produce a random forest first, then the artist flies through with a bandsaw to move, add & delete objects.
* Athmosphere ./ skybox rendering
* Rendering method; Deferred / Forward
Deferred or Inferred rendering pipelines are popular these days as they allow to use bigger numbers of lamps. Then again, if you only want the sun and maybe a few other local sources, Forward might work easier for you. Depending on your choice, you need to think forward how you will render (semi) transparent stuff like grass and the leaves, because doing transparent rendering is more harsh in a Deferred pipeline. Not impossible, but you'll need some tricks.