Thought I'd bless this thread with some interesting results from an optimization test I did recently. Unreal users will know that reducing the number of material slots reduces draw calls, thus improving performance. But what is the best way to do this for Daz characters? This is where UDIM comes in. UDIM essentially takes multiple textures (for example, face, head, torso, arms, legs) and combines them into a single texture which can be applied to the character mesh. This is used in Daz as well. UDIM textures have naming conventions that correspond to the tile they should be applied to (example: Face is 1001, Head is 1002, Torso is 1003, etc). We can use UDIM to
severely reduce the number of material slots needed for Daz characters, while still getting the same level of detail.
I started with 2 basic Genesis 8.1 figures straight from Daz. They are identical, save for the fact that one has 10 material slots, and the other has 2:
In order to test the performance of both characters, I created an empty level and spawned 100 actors, once for the UDIM character, and once for the non-UDIM character.
On the right side you can see the statistics for each test. After comparing the two, I found that using UDIM characters results in:
-52% increase in FPS
-52% reduction in ms per frame
-75% reduction in draw calls
This is clearly a very significant improvement with UDIM. Note that in this test I did not use or account for LODs, as my goal was purely to test the differences between the materials.
One reason that UDIM has not been widely adopted in games though is because it increases VRAM requirements, thus giving it more use in cinematics/unbiased rendering. I wanted to find out exactly how much more VRAM using UDIM would require, so I captured both frames and opened them in RenderDoc:
In total, UDIM materials used about 260mb more VRAM than the non-UDIM materials, or an increase of about 6%. However, when considering the massive reduction in draw calls and net performance gain that UDIM provides, I think it is a price worth paying. Hence, I am now using UDIM on the player character and NPCs.