Scenery LOD ideas for FlightGear
Moving forum discussion to the wiki:
Maybe there could be one single globe texture, and each tile btg would have it's correct texture coordinates into that image.
For LOD, I'd implement something like this :
- Allocate a huge texture for a single 10x10 degrees area
- load tiles as usual
- render the tile to a small sub-part of the huge texture
- replace the tile geometry by a quad using the corners of the tile and map the small chunk of texture to it
- unload the tile geometry to free memory
- repeat for each tile of that area
- save the texture to disk and repeat for another 10x10 degrees area
Sharing the same texture for a huge area save state changes. The tile quad geometry could be saved in the btg format to a Terrain.LowRes directory tree, using the material property to reference the shared texture
- For the LOD algorithm, CDLOD  would probably be the best bet. CDLOD is like Chunked LOD, but plays nice with the GPU, and subdivides the LOD based on the distance from the camera/view point. Traditional CLOD implementations are not GPU friendly, this implementation is, and has the benefit of LOD based on camera position. The algorithm that would be the best bet for implementation is something similar to the streaming CDLOD implementation in the code samples.
- the LOD algorithm should be moved to a separate thread, otherwise it really will just drain on the main thread, and will have less, if not worse performance that is possible with a properly implemented LOD system. This may have some problems however due to the potential for the LOD system to have issues with the property tree and threading.
- It may be wise to base the LOD changes off of Rembrandt, rather than the current FGFS code base. Deferred rendering from Rembrandt is a major rendering change, and it may or may not play nice with a new LOD implementation based on the non-deferred rendering of the current code base.
- For higher end GPUs, implementing some of the techniques from these blog posts may help increase FPS on OpenGL 3 and 4 level hardware.