Re: Experimental DSM-based terrain renderer with streamed orthophotos
Gerard Krol <[email protected]> Mon, 1 Jun 2026 22:24:28 +0200
| Newsgroups | gmane.games.flightgear.devel |
|---|---|
| Message-ID | <[email protected]> |
I've also added initial support for the Czech Republic and done some performance optimizations. I've updated the page with screenshots. Downloading tiles seems to be a bit less reliable for CZ than for NL but it's great to have some more variation in terrain! It does appear I have some bugs in sampling the terrain for the simulation though, so if you've got problems with the runways I recommend you start in the air. Switzerland would also be great to add - they do have the open data - but I haven't found a service where I can download the height data at lower resolution / bigger area. That's something that's required to have terrain streaming work well. If anyone knows of such a source let me know! Recommendations for other countries are welcome too, WMTS ortho combined with WCS/ArcGIS height would be easiest to use. Regards, Gerard On 31-05-2026 14:13, Gerard Krol wrote: > Hi all! > > > > This terrain renderer streams orthophotos and height data at runtime > and renders them using a quadtree-based terrain system with > displacement-mapped meshes. > > Screenshots are available at https://gerardkrol.nl/flightgear/ > > Testing instructions: > - clone https://gitlab.com/gckrol/flightgear and checkout the > `dsm-stable` branch > - build as usual > - select a location in The Netherlands (recommended: EHAM,EHSB) > - start with the `--terrain-engine=dsm` commandline flag (put this in > Settings > Additional Settings in the launcher). > - terrain will automatically be streamed in > - happy flying! > > Performance > Runs at 20-30 FPS on my 8 year old laptop at 1080p. I haven't measured > it in FlightGear but the terrain should take only about 150MB VRAM, > due to the wonders of BC1 texture compression. > > Licenses of used data > - Aerial photo's: CC-BY 4.0 PDOK/Kadaster NL. Rate limits/etc. are not > published. They do request a Referer header (and I assume a User-Agent > one as well). > https://www.pdok.nl/introductie/-/article/pdok-luchtfoto-rgb-open- > - Heightmap data (AHN): Open data (no restrictions) > https://www.pdok.nl/introductie/-/article/actueel-hoogtebestand-nederland-ahn > > > Limitations > - The code is currently experimental and needs cleanup, documentation > and adaptation to FlightGear coding standards. Most of it is AI > written and has had only limited review by me. > - NL only, but should be easily extended to different regions if data > is available in WMTS, WCS or comparable standards. > - Sides of buildings sometimes look a bit weird on the ground or when > at low altitude - I've experimented with some shader tricks in a > separate project and this can probably be made less distracting. > - Roofs of tall buildings may be misaligned due to the available data > not being 'true ortho'. In a separate project I've experimented with > manually/automatically aligning the data, and this improves > appearance. This is outside the scope for now. > - This does not have any controls for cache management, LOD settings > etc. All could be easily added. > - Always uses the default/basic fog, even when ALS is enabled. > - Files are processed/compressed at runtime, even when loaded from the > cache. > - Photo's are taken during the day - so it looks slightly weird to see > shadows under an overcast sky. I've experimented with a 'day for > night' filter though and a moonlit night still looks fine. Also - > shadows are baked in of course, so your nice sunrise/sunset will have > mismatched shadows. > - I'm already doing some processing on the heightmap tiles, but > artefacts are still present in some locations, often in water. This > should be fixable with some better processing logic. > - The branch is based on FG 'stable', so would have to be transposed > onto 'next'. As this is a quite isolated terrain system I'm not > expecting major problems. > > Hacking > If you want to start hacking on this (which I would highly encourage), > here are some starting points: > - The new code is in the terrain_dsm* files. > - The WMTS url for the orthophotos is built in > terrain_dsm_tile_source.cxx:169 > - The WCS url for the height data is built in > terrain_dsm_height_source.cxx:248 > - Note: the renderer currently only supports the Dutch epsg:28992 > coordinates, so you'll probably have to adjust the code. > - Downloaded tiles are cached in the FG download folder under DSM > (default ~/.fgfs) > - To load higher detail tiles in the distance, increase the 4.0 factor > in terrain_dsm_orthophoto.cxx:shouldSubdivide > > Next steps > - Try it and discuss it! > - Figure out if this has the potential to be merged, and what's needed > for it. Definitely needs settings and support for different regions (I > believe ortho/height data is available for a lot of countries). > > I'll keep working on this for a limited time, but I would definitely > welcome other contributors if people think the approach has potential. > > Let met know what you think! > > Regards, > > Gerard > > > > _______________________________________________ > Flightgear-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/flightgear-devel