Another take on farmesh?
Hi guys,
I was thinking about something lately. There's clearly a problem with far blocks (especially from a high position, with a free line of sight). Farmesh - is it more than a hack? - was trying to help that. But it just doesn't fit with the whole "blocky" feeling of the game.
So I remember some thing we do in geomatics software, when dealing with very high resolution (2d) pictures : pyramids. That is, we pre-compute (and store alongside) a set of smaller resolution copies of a given picture (usually a tile of a map), so that furthest zooms don't need to load the whole thing.
Something similar could be done to enhanced farmesh. Let's take a 16^3 map block. With a thoroughly crafted set of rules, we could reduce it to a 8^4 block. And even further. We could even pre-render it as a (blocky) mesh, if Irrlicht has a way to serialize them. Then, until the block is modified, we could use its pre-rendered "3D thumbnails" whenever we need to show it from afar. We wouldn't even need to re-compute the thumbnails everytime the block is modified : we could just mark it as "dirty" once it's been modified - possibly computing a "dirtyness" value depending on the number/location of changed cubes, and re-compute on a background thread.
It might be a lot of work - I'm not too familiar with Minetest's internals yet, so I can't tell - but it would really improve the experience. Especially when we're about to allow people to fly, and see the world from a bird's eye :)
I was thinking about something lately. There's clearly a problem with far blocks (especially from a high position, with a free line of sight). Farmesh - is it more than a hack? - was trying to help that. But it just doesn't fit with the whole "blocky" feeling of the game.
So I remember some thing we do in geomatics software, when dealing with very high resolution (2d) pictures : pyramids. That is, we pre-compute (and store alongside) a set of smaller resolution copies of a given picture (usually a tile of a map), so that furthest zooms don't need to load the whole thing.
Something similar could be done to enhanced farmesh. Let's take a 16^3 map block. With a thoroughly crafted set of rules, we could reduce it to a 8^4 block. And even further. We could even pre-render it as a (blocky) mesh, if Irrlicht has a way to serialize them. Then, until the block is modified, we could use its pre-rendered "3D thumbnails" whenever we need to show it from afar. We wouldn't even need to re-compute the thumbnails everytime the block is modified : we could just mark it as "dirty" once it's been modified - possibly computing a "dirtyness" value depending on the number/location of changed cubes, and re-compute on a background thread.
It might be a lot of work - I'm not too familiar with Minetest's internals yet, so I can't tell - but it would really improve the experience. Especially when we're about to allow people to fly, and see the world from a bird's eye :)