Virtual Texturing Feedback

It’s not even in an official release yet, there’s problems that will hopefully get solved down the line, more likely if they’re brought up here. The two primary Crunch devs are on twitter, I’ll just link them this thread and ask about getting high bit format support. UDIM could also potentially be solved down the line, etc. etc.

Hopefully if they address the issues you’ve encountered, this will open the door for easier and more accurate import of Geotiff too.

Thank you for that !

How soon can we expect support for virtual textures on Vulkan or GL ES 3?

For some reason every texture I import now has VT in the bottom right corner of the icon and when I try to set the max texture size the engine crashes (I’m using the latest preview). I’m wondering if this is related to virtual texturing? I didn’t do anything to turn enable it.

Edit: I see that it was because virtual texturing is now on by default but only for over 4k. Turning that off on the texture solved crash when trying to set max texture size.

Recently commited to 4.23 branch
Change texture storage to Array64 to support 16K and larger Texture import

Oh man, this is what I’ve been waiting for! Can’t wait to try it out, I hope it’s stable for release.

Hi, I am very new to VT and I am interested in learning more.

I downloaded the 2.23 Preview and did not get the results I was expecting, it seems like the texture does not “fit”. I am guessing there is some UV issue.

Are there any resources that I could dig in to so that I can start working with these VT’s.

Also, for further info, I am importing the model and then creating a VT tile by importing 1 of 15 UDIM textures, could that be causing a issue? That I am importing UDIMs instead of a singular texture to create the VT?

Like I said, this is all new to me, so any help is much appreciated.

Is that going to help with the importing times, though? Even just importing an 8k texture takes a veeery long time.

Testing udim import for 16 4k texture files and i get a crash

the mesh itself has 21 tiles
and it’s spread across 3 materials

are there any processes that i should be aware of for udims in the virtual texturing beta for this 4.23 beta?
maybe the udims have to stay in 0-4 or something? or maybe there’s a max number of udims?

also what happens to vertex animation textures if you spit out really big animations from houdini? like over 4k textures? will the animation frames load correctly?

Unfortunately there’s various places during texture import that don’t properly handle large textures. So even though the VT backend can handle extremely large data (in theory), there’s currently no way to get this into the engine. I’ve successfully imported 16k x 16k textures, but that seems to be the practical limit for now. This will be improved in future versions.

The initial version won’t support VT sampling from vertex shader. There are various complications with this, but the main problem is the interaction between VT streaming and shadow map caching. Again, this is something that we hope to improve in future versions.

thanks for the reply
so does that mean if I’m using UDIM, the batch of textures used for that is safe if it’s within 16k x 16k ? so like 4 x4 4k textures?

Yeah I think that should be a good guideline. The exact layout of the UDIMs shouldn’t matter. The system is at least smart enough to avoid allocating a linear chunk of memory for the entire UDIM space. So you should be able to fit 16 4k UDIM sheets in whatever configuration you like, even if it’s sparse. UDIM support should also efficiently handle UDIM sheets of different sizes, so you can have some 4k sheets mixed with sheets of other sizes without wasting memory.

ahh okay cool
thanks for the input! but seems I’m also getting some crashes when trying to open a few UDIMs sometimes just 4 4k tiles, I’m also guessing that the UDIM bake is always calculating from 1001
so If I get tiles are further from 1001 (ie only 3 4k tiles 1004,1005,1006) they still bake from 1001 resulting in an image over the 16k budget?

so I guess udim layout still matters if my textures are too big? or too far away from 1001

I was trying to tile my layout above into multiple texture tiles into unreal and I couldn’t get it to work that way
I ended up merging the UDIM in photoshop, and scaling it all down into a 14k x14k texture

these were originally files rendered out in vray, so it’s pretty awesome watching it render real-time in unreal

Does anyone know, please, how to turn of texture streaming by default when I import the texture?

virtual texturing is awesome so far,

does this work at all on mobile?

also there seems to be a issue with the check box, i see it on by default when I import a texture with resolution 16384 in X or Y
but when it’s smaller say 14,366 it says the virtual texturing is off, but it can’t be, I have a bunch of textures in the scene and I’m not getting any texture warnings and I can’t seem to click the virtual texturing box for these textures

using version 4.23 preview 7

here’s a picture of the apparent false VT checkbox

I also noticed I can’t seem to make material parents with the virtual textures as paramaters that I can swap a texture out in an instance

> Does anyone know, please, how to turn of texture streaming by default when I import the texture?
I think the latest preview has a bug where “Auto Virtual Texturing Size” will cause texture to have VT enabled, even if VT is disabled for the project. This will be fixed in final 4.23, but for now fix is to just make “Auto Virtual Texturing Size” very large.

> does this work at all on mobile?
Not in 4.23. It’s technically possible to make it work, so it should be supported in some future UE4 release.

> but when it’s smaller say 14,366 it says the virtual texturing is off
Virtual textures are required to have power-of-two dimensions. We should probably add some better logging or UI feedback to communicate the problem here.

> I also noticed I can’t seem to make material parents with the virtual textures as paramaters that I can swap a texture out in an instance
This should work, although texture parameters overridden in a material instance must match the VT status of texture in the base material. You can’t override a virtual texture with a non-virtual texture (or vice versa).