We are very interested in leveraging Mutable in our character pipeline to help with customization and modularity. We were especially interested in features like the ability to merge materials and textures (see Showcase: Merge Materials and Textures in MutableSample project) or use projectors (see Showcase: Projectors in MutableSample project).
However, we are seeing in the showcase project that if you change some of the assets to use virtual textures, customizable objects like CO_Projectors_showcase and CO_MatMerging_Merged no longer seem to function and render correctly. Virtual textures have become a pretty integral part of our workflow, both because it enables our artists to use UDIMs and it helps to alleviate memory concerns when appropriately considered and applied.
The merging example is of particular significance, as it would be great to be able to merge modular character assets and reduce draw call counts where possible.
What, if any, virtual texture support is provided in the Mutable plugin?
Looking at this some more, there are a few things that stand out to me that may explain why it doesn’t work in its current state:
- These type of texture-based operations generate an atlassed texture.
- The resultant mesh appears to have an altered UV layout to match the atlassed texture, which from a UV layout standpoint should work with the generated atlassed texture.
- The atlassed texture is dynamically generated and not a static texture asset, so I am assuming it cannot leverage virtual texture streaming [similarly to how UTexture2DDynamic is [Content removed]
- The material instance expects to sample a virtual texture, so errors are thrown when the input texture is not one, causing strange rendering artifacts.
Is the primary issue that the resultant material instance doesn’t work because of the sampler type, or is there something else at play?
Are there any plans to make this type of workflow more tenable?
As an experiment, I tried creating a copy of the base material without virtual textures, and then used a material instance of it as the Material and Reference Material for the Mesh Section and Extend Mesh Section nodes, respectively. This worked for the CO_MatMerging_Merged, but in an example I created with a mesh authored with UDIMs, only the first UDIM tile mapped correctly.
Modifying the UV Layout via the Skeletal Mesh node and trying to add a block for each of the UDIM tiles does not seem to have an effect. Looking at this page, it seems like the intent is that everything is contained within a single UV tile.
Hi Carlos,
Thanks for reaching out about this. Textures generated or modified by Mutable, that is, “Mutable textures”, cannot be virtual at the moment, and there are no definite plans to support them. We have thought about support with Virtual Textures with Mutable, but we are currently prioritizing other features over this one. On the other hand, textures in pass-through mode and textures in material instances that Mutable doesn’t touch (not connected) can be virtual. Hopefully, that can clarify things for you, but please let me know if you need further information.
Thank you for the response, Tim! Having virtual texture support would be really helpful for more modern character art pipelines, so it’s good to hear that the team has at least considered support.
You are welcome. I’ve noted your feedback on adding Virtual Texture support internally and will try to forward it to the developers. You are not the only studio that would like to have support for this feature, so thanks for bringing this to my attention. If you don’t have any more questions, I will close out this ticket.
Yes, thank you for forwarding it. Part of our considered adoption of Mutable into our content pipeline hinges on the eventual support of virtual textures, since they have become an integral part of Unreal’s workflow and rendering pipeline.
I’ve noted that. I will close out the ticket then. Have a lovely rest of your day!