Mixed build Extents

So we have local space and tiled builds, would it be possible to have minded render extents for a world. What I mean by this is that while the main global extents would be for example 80km by 80km with 8k by 8k resolution, there would be one area where World Machine was sticky working in 1km by 1km with 1k by 1k resolution that would then merge with the main node setup. This would be useful on maps like this


This is a 250km2 with 5k by 5k resoltuion map Ive been working on recently and as you can see is ridiculously complex. I paged about 50GB of data on just the terrain stripped down to a collection of file inputs and an additional 250GB just for the coloring. Additionally, I had to macro some of the terrain sections to save ram.
Now, most if not all of these features would have fit in a 20km by 20km extent, in fact, later on, I would render the separate terrain features individually and import them as file inputs.

The issue with that method is that now the flow has been broken and if I do want to make a change on one of the areas I would have to rebuild and export with the same render extents.

It would be ideal if World machine could render those areas at just 20 by 20km with the performance and ram advantages at working at such scale. It would also fix some scale/resolution dependence issues World Machine sometimes gets when switching between two different sizes render extents. The custom render extents would work the same way as local and world space do now, with setting devices to use a custom extent via groups. The yellow lines are route pickers that enable/disable nodes on the terrain depending if they are in view or not, something like that would work for the custom render extents as well, where the set of nodes is just completely bypassed if the custom render extent does not fall inside the main one.

Now, this would obviously be complicated to implement, how would those render extents work when it partly overlaps the main extents, what to do at the borders of the smaller render extents, how to discard data, how to implement it with the tiled output.

I would love to hear your thoughts on this.

A possible example in this example the Main extents is 5k by 5k, but I placed the wandering 2k extent to build the green volcanoes. Instead of building the volcanoes at 5k by 5k which 1. wasted RAM, 2. is performance intensive, 3. can result in a slightly different output due to differing renders the custom render extent would just build the volcanoes at 2k. This is similar to tiled builds exempt for the individual tiles dont exist on a grid and only a selection of devices uses the tiled builds.

Am I correct to understand you want a kind of extent that only renders the nodes that have any effect within that extent?

Also, regarding your comment, why did changing the output resolution of the “wandering 2K” extent not work?

Interesting idea!

Long term, There are some really interesting places I want to go with having hierarchical/nested render extents. Mostly this is for data propagation from large to small scale – some planned future devices work more on a continental scale, so you want to be able to use them to define very large scale elements and then have that data available inside your highly detailed, small render extent.

In the more near term, I think we can get most of the way to your request with a planned improvement to the Checkpoint device, detailed here:

https://forum.world-machine.com/t/cache-terrain-device/5310/2

You could basically checkpoint-capture each individual high res area, and have them feed their results into a more global scope. The only additional device required I believe be a “Select render extent” device that outputs a mask indicating which areas are inside of a given render extent, which is a trivial addition. You could then merge the output of the detailed areas from captured checkpoints with global data calculated from the largest render extent.