handling *extreme* texture resolution

ive a client who works with satellite imagery. they wish to zoom from space down to a city, google earth style, but nicer.

i have a relatively high resolution earth model, but in no way would it allow such a shot.

they can provide me with set of tiles (jpeg or png) which cover the area required, at the resolution required. there are 16 tiles, with what appears to be a small overlap, although i might be wrong, ive not seen the actual tiles they will provide. . if i put all the tiles together total resolution would be around 200k x 200k pixels.

how on earth would i deal with this? could tiled TX handle that as a single file with LOD so i dont kill my workstation? ive only got 128 gb ram! id really prefer to work with a single texture file, as aligning the tiles by hand in max and assigning them to specific faces, without visible seams, seems tricky.

how would i even process the data? no idea if photoshop would allow me to stitch the tiles together, and what format i could save out, and how i would convert to TX..?

If i can find a suitable format to save the texture, and use it without crashing, i was thinking of using vraydecal to plop it on top of my existing earth texture…

thoughts?

This is a tricky one. I think you have to be smart about it. Do you have a final or close to final camera move? What’s the render resolution? If for example you are zooming in from orbit in just 100 frames or something and rendering 4k res for final, there is absolutely no need to have that many high res textures, as there is a point where the distance from camera, render resolution pay a role where you won’t see any difference if the texture is 4k, or 40k.
The .tx format does provide dynamic lods, which means the further away from camera the object is, the smaller the resolution of that image is loaded. It does indeed save memory and time for rendering. I’m not sure how your textures are delivered to you. Is it just a huge tile with a bunch of maps? I would try to map them on a plane, then dice the plane into 16 pieces, for each I would have a unique udim texture. I would project that plane onto your geometry to get it to wrap into place (earth curvature). I would first resize all the textures to something like 4k, or even 2k, mip map them (.tx conversion) then render the camera move and see what you see. For areas where it does not hold up, you can then select those tiles and upres the texture to higher resolution, still keeping it tx.

Photoshop can handle huge resolutions, but the larger it gets the harder it is to work with, you will reach a point where you can’t work with a single large image, I would not advise to go that route, saving and loading that single large image would be a nightmare.

thanks for the quick reply.. the camera move has not been decided yet but since they want to “show off” im guessing it will be a leisurely zoom down from orbit…

regarding TX, im not clear if it will load only the parts of an image that are visible? for example, if im close, ill only see a small part of one texture, but at full resolution… does the “tiled” nature mean it will load the central part at full res and more distant parts of the texture at lower LOD’s, and the non visible bits wont be loaded? or will it load the whole textrure at full res if im close?

For the tx, you likely will never ever load full res image. Since for you to load a full res you have to be super close to that object which likely you won’t be. I mean if you are approaching ground level the base ground texture will be covered by the buildings, roads etc.
I think it splits each texture in blocks (mip maps) like small buckets basically, then loads the given LOD for the part of that texture based on the ray hits and distance from object to cam. Further object is from camera the smaller the texture block that is loaded and vise-verse.

For comparison I had recently done a project with a bridge and few camera fly throughs. The total texture count was around 1000+ textures in udim, over 100 udims on the bridge. In regular non mipmapped textures it would use close to 150Gb of ram during render. With .tx textures that was reduced to about 50-60Gb of ram and render time has also improved. We had a camera fly right through one of the bridge pillars, and for that part of the bridge I could see it hitting the max resolution *just visually I saw texture blurring as it was maxing out on the res, but for the entire bridge it would only load reduced size since the bridge is very large, its long etc so no point to load max res textures for the objects which are very far.

For the non visible texture, its a bit arbitrary since in raytracing world almost everything is always visible, however if you don’t have reflections for example, then objects behind camera won’t be traced for reflection only shadow. But even shadow trace will load the texture, so I would use shader override in shadow to put a grey mtl there to optimize the shadow or any other tracing.

great tips, thanks!

well i received the tiles (the first 3 at least) cripes , i think i might half the resolution as the first step.

each tile is 60k wide and 43k high.. appear to have no overlap and fit together perfectly.

just for fun i opened the first tile in PS and expanded the canvas to the full 4x4 grid… 239600x175600..

a nice 42 gigapixel image, and 117Gb file size

to be honest i was amazed that it expanded the canvas instantly without complaining, and even let me load the second and third tiles in and snap to the first… all with no lags…

lets see what happens if i try to resize or save out though!

despite your likely great advice, i am gonna give it a quick try as a single image first… and convert to TX.. just because if by some miracle it works itll save a load of fiddling. ive never read a thing about UDIM and would have no idea what im doing. ill try the “dumb” way first.. got a little time, if i have to leave computer overnight to save files etc..

once i fail miserably ill use your method.

edit: just noticed with 3 tiles in there im already using 70Gb ram in photoshop.. i have a feeling that 128Gb wont cut it for 16 tiles!

I don’t recall how it works in max, but in maya loading large textures even in maya ui is brutally slow. Even with thumbnail preview. Good luck :slight_smile:

Well, what does you client use to process and view those tiles? I mean, they are the ones generating them. Just curious.

to be honest i have no idea its certainly all custom stuff… i could ask.

Just a quick update, managed to stitch into a single image ( reduced all tiles to 50% first) and created a single psb of 108k x 80 something k.. that saves fine, but every other format refuses to save. exr crashes ps, png has an arbitrary 2gb filesize limit in ps (despite png not having such a limit) tiff has a 4gb limit, photoshop RAW saves but i cant open it anywhere else.. PSB also works but i cant use it for anything outside ps.

i guess UDIM with the source tiles is the way forward, but i dont see an easy way to do a UDIM patch on a sphere already mapped for a single texture, and align it perfectly to the existing overall texture… blended in at the edges etc… Dmitry suggested conforming a plane to the sphere, but i see this being problematic too..

the ideal would be if i could load the 16 tiles somehow into the vraydecal and project onto the sphere with that.. but i dont see how.

It should be just a matter of scaling up the UVs, f.e. scaling up 4 times to (0,0)-(4,4) range will give you 16 tiles aligned perfectly over the old UVs. I’m not sure if you need to scale the actual UV or simply adjusting the tiling in the VRayBitmap texture, but one of those should work.

Best regards,
Vlado

I have used this plugin for Lightwave ages ago and could load huge earth textures without problems. Isn’t something like this not available for Max?

I’ve tried to do this several times, a long time ago when PCs weren’t very powerful. It’s always tricky.
Have you tried it as a post effect?
Andrew Kramer did this using After Effect and the result was pretty good.

But I think udim is the only way.

Delete plz :slight_smile:

thanks for the tip vlado, but the 16 tile patch covers a small arbitrary area within the current overall earth texture.. in this test case, most of south east England.. its also not corrected for spherical projection, unlike the original globe textures from Nasa, so would need blending into the existing texture at the boundaries. something vraydecal seems perfect for… however i need to find a way to get the data into a single tiled exr or TX..

i might see if GIMP can handle the job better than PS.. however ive no idea if makeTX will fall over if presented with such a monster file, i do recall it being a little “unstable” in the past.

It would be cool if there was a way for the vraybitmap to load seperate tiles, rather than just compiled tiled bitmaps… it would really allow unlimited texture sizes if you could load a set of individuaL tiles which are too big to be stitched or otherwise worked on, and the bitmap loader to treat them as it does tiled file formats, loading tiles where necessary.

Obviously apart from these kind of jobs, im not sure there are many sources of huge textures in individual tiles!

that appears to be just a loader that works with tiled EXR… i dont see what it does that vraybitmap does not already do, unless i missed something.

but the 16 tile patch covers a small arbitrary area within the current overall earth textureOk, I thought you wanted to cover the entire globe. An image to explain what you need to do will help - then maybe I can think of another solution.

Best regards,
Vlado

i use global mapper for earth map jobs , also Downloaded my textures with it… took some time to finish this download xD i`m not shure how the import of your files work there position based… , but i`m shure there is a way (never did it).
You can use your files and don`t need to download anything ..also you can setup your wanted projection/ reprojection!!
With this dataset i exported a tile set of 50* 50 tiles (got 10k*5k resolution per tile- a 76m per pixel dataset) , converted them to tx files and loaded them in vraybitmap
For earth i used a plane with 2 bend modifier to get the sphere (180°, 360°). i had to prepare the correct uvw-plane mapping size (uvw fit / 50, alligned to the lower left corner)
I could render it with my machine (128gb ram)
to improve workspeed i switched between 1 small earthmap and udim large 1 ( used 2 mapchannels )

hope this helps :slight_smile:

Then I don’t understand why you are having a problem with huge textures, because that’s what I used Infinimap (Pro) for on a machine with 16G RAM! I haven’t used VRay for such jobs yet, so wouldn’t exactly know how VRaybitmap compares.

I have used both, and Inifini-Map is indeed similar to who VRayBitmap handles the tiled EXRs. The main difference being it was doing it about decade or so earlier; that’s really about it. LightWave didn’t have any method for doing that, hence the plugin.

I might make a grid of 9 squares, and make the center map very high resolution as a tiled EXR (or .tx if you don’t need float), then make the outer 8 square lower resolution, but also big, and tiled EXR or tiles .tx files.Use a mask to blend those two.

It’s a big pain in the butt, no doubt.