Hello. If we create a Texture2DArray, populated with Virtual Textures, the material system TextureSample node will generate a regular Texture2DArraySample() call in hlsl, which is itself just a passthrough to a regular Tex.Sample() call.
Have you thought about upgrading this to use the Virtual Texture system (perhaps when all of the SourceTextures in the array are VirtualTextures)? We are looking at using this material with Nanite meshes, and regular texture samples are derivative ops, which we would like to avoid.
We don’t have virtual texture arrays on our backlog. I’ll start a discussion of the options for this internally. One current option is to build a UDIM virtual texture from your 2D textures.
What other commentor said is correct, currently UDIM is one of the possible solutions , there is also bindless texture binding which uses an index in material to select texture but not much tutorials out there for it.
Personally I made & released a plugin on Fab that deals with UDIMs and make workflow much more bearable in engine.