Results 1 to 10 of 18

Thread: Rendering realistic satellite view style terrain with OpenGL

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Administrator waldronate's Avatar
    Join Date
    Mar 2007
    Location
    The High Desert
    Posts
    3,561

    Default

    You should be able to use any search engine to find any number of procedural planet shaders that can be easily adapted to run on the GPU. By "any number", I mean greater than zero and by "any search engine", I mean one of the ones that has indexed at least a few hundred million pages.

    Look up F. Kenton Musgrave's Gaia shader from long ago in the book Texturing and Modeling: A Procedural Approach. It's a Renderman shader, but the principle is the same as a GPU shader.

    Look at articles by Inigo Quilez ( http://iquilezles.org/ and lots of his at stuff https://www.shadertoy.com/ ). They are already shaders. Or skip the understanding part and just go to https://www.shadertoy.com/results?query=planet for quick satisfaction.

    If you want to generate biomes from world position and altitude, you can use a small texture as a lookup (a texture is just a lookup table for quantities that are expensive to calculate otherwise), you can convert an annual average temperature and annual average rainfall into a rough biome map using a lookup similar to http://www.thewildclassroom.com/biom...tiongraph.html. Ideally, you would have a temperature-rainfall map by biome type and feather the types out at the edges so that you can get a probability for each type of biome rather than hard edges; switch between biomes by the probability indexed into a fractal map to get scattered blending rather than soft blending. Implementing the full Koppen-Geiger model is probably not needed for the basic case.

    You can convert latitude, altitude, axial tilt, and time of year into a base temperature (insolation based on latitude and axial tilt with temperature decreasing by the lapse rate for altitude). Sample that a few times around the orbit for each point. You can convert latitude and temperature into a very rough rainfall amount by starting with rainfall high at the equator, low at the desert latitudes, increasing to the temperate line, then dropping again toward the poles; if you want to calculate a distance from water and decrease rainfall past a certain amount, that helps, too). For both rainfall and temperature, add a small fractal perturbation to keep things from being too banded by latitude. A fancy sim that does heat and moisture transport via wind and wave would give nice results. For finer details, you'll probably need rivers and should take the slope and aspect angle relative to the sun into your calculations.

    Once you have your biomes, sample a googly map of Earth at similar biomes to get a patch of representative texture. Then synthesize larger patches on the fly using a texture synthesis engine. As above, use a fractal to control the hard transition between biome types.
    Last edited by waldronate; 05-01-2017 at 10:01 PM.

  2. #2

    Default

    Quote Originally Posted by waldronate View Post
    You should be able to use any search engine to find any number of procedural planet shaders that can be easily adapted to run on the GPU. By "any number", I mean greater than zero and by "any search engine", I mean one of the ones that has indexed at least a few hundred million pages.

    Look up F. Kenton Musgrave's Gaia shader from long ago in the book Texturing and Modeling: A Procedural Approach. It's a Renderman shader, but the principle is the same as a GPU shader.

    Look at articles by Inigo Quilez ( http://iquilezles.org/ and lots of his at stuff https://www.shadertoy.com/ ). They are already shaders. Or skip the understanding part and just go to https://www.shadertoy.com/results?query=planet for quick satisfaction.

    If you want to generate biomes from world position and altitude, you can use a small texture as a lookup (a texture is just a lookup table for quantities that are expensive to calculate otherwise), you can convert an annual average temperature and annual average rainfall into a rough biome map using a lookup similar to http://www.thewildclassroom.com/biom...tiongraph.html. Ideally, you would have a temperature-rainfall map by biome type and feather the types out at the edges so that you can get a probability for each type of biome rather than hard edges; switch between biomes by the probability indexed into a fractal map to get scattered blending rather than soft blending. Implementing the full Koppen-Geiger model is probably not needed for the basic case.

    You can convert latitude, altitude, axial tilt, and time of year into a base temperature (insolation based on latitude and axial tilt with temperature decreasing by the lapse rate for altitude). Sample that a few times around the orbit for each point. You can convert latitude and temperature into a very rough rainfall amount by starting with rainfall high at the equator, low at the desert latitudes, increasing to the temperate line, then dropping again toward the poles; if you want to calculate a distance from water and decrease rainfall past a certain amount, that helps, too). For both rainfall and temperature, add a small fractal perturbation to keep things from being too banded by latitude. A fancy sim that does heat and moisture transport via wind and wave would give nice results. For finer details, you'll probably need rivers and should take the slope and aspect angle relative to the sun into your calculations.
    Thanks, but I've got all that already covered, I have algorithms to generate terrain that fits my needs, together with moisture (in my case it's proximity to sweet water source) and temperature (like you've suggested latitude and axis tilt), so basically I've got biome types figured out per field.

    Quote Originally Posted by waldronate View Post
    Once you have your biomes, sample a googly map of Earth at similar biomes to get a patch of representative texture. Then synthesize larger patches on the fly using a texture synthesis engine. As above, use a fractal to control the hard transition between biome types.
    Any chance you can pardon my ignorance and elaborate a bit more about synthesizing textures from small samples and using fractals to control the transition between biomes? Basically the underlying structure of my terrain is hexagonal, so I need a way to make biomes transition as "noisy" as possible for hexagonal structure not to be obvious. Any links to articles explaining implementing those techniques would be greatly appreciated!

  3. #3

    Default

    Quote Originally Posted by waldronate View Post
    Once you have your biomes, sample a googly map of Earth at similar biomes to get a patch of representative texture. Then synthesize larger patches on the fly using a texture synthesis engine. As above, use a fractal to control the hard transition between biome types.
    Hi again

    I'm trying the wang tiles approach, and as you've suggested, I'm trying to sample Google Earth Pro for textures. Surprisingly, Google Earth Pro only saves images in jpg format, moreover the quality of textures in Google Earth itself is quite low when I zoom in to a lavel of 30-40 km above surface.

    Any ideas what other tools I can use to sample textures?

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •