Atlases - converging to one

So I have a 3D scene with about 30 to 40 objects in it, all the objects are from various unity assets mostly from the asset store, how can I get all the objects to point to one atlas to reduce the draw calls?

Is there a program you use for this or what is the best way to accomplish this?

Thanks,

Vanz

Depends on the level of combining / baking you want to do but here are some ready-made options

Good for combining your scene objects, can also do the materials too.
(free) Mesh Combiner | Modeling | Unity Asset Store

Much more features, better output too, works for things like SkinnedMeshRenderer as well. However it takes a lot more setup to use.
(paid) Mesh Baker | Modeling | Unity Asset Store

Thank you xjjon, I should have been clearer, I have a game with lots of rooms connected by corridors so I use occlusion culling a lot, which has steered me away from combining meshes.

One atlas can be used for many objects, so what I would like is to do is combine the textures into fewer textures and less draw calls but not combine the meshes so I can still utilize occlusion culling, is this still practical?

Thanks,

Vanz

Sure it’s possible, but I can’t possibly see 30-40 additional draw calls being that significant of a performance impact unless you’re targeting extremely low-end hardware. Have you actually identified this as a performance bottleneck?

1 Like

There are many Atlas makers/creators on the asset store, but as Murgilod has implied, do you know or understand where your suffering performance-wise?. Understanding optimization should be your concern, and the Profiler tells you just that. Do you have high draw calls?. Maybe posting a SS of your Stats might help us help you.

Thanks warthos3399 and Murgilot,

I’ve done a lot with the profiler and optimization, see below “Past investigations/optimizations” posts. Pretty much all of my bottleneck is coming from the GPU side. Also done many comparisons comparing various gameobject assets against each other, reducing tris and verts, switched to 100% baked lighting, occlusion culling, optimized settings, FFR… etc. So next, I would like to try atlas combining, my draw calls are high, and my FPS is around 60 to 80, but since I’m designing for Quest 2, I want to get them always over 72 FPS.

I feel like I’m getting close to my targets and am investigating/trying all things I can think of, has been suggested here or seen in optimization vids. So Atlas combing is next on my list and not the last… I’m searching for even 2 to 3 FPS where I can get it…

I know I can try a bunch of random Atlas makers/creators on the asset store (which I may still do), but I am very interested in any techniques, suggestions or programs that users here have had success with in regards to 3D Atlas combining

Thanks,

Vanz

Past investigations/optimizations:

Okay, you point out those past investigations and optimizations but one of the replies brings up a very specific and important question

Have you done any RenderDoc based analysis? Unity’s GPU performance profiling tools are not terribly robust.

@random_comments above
Just so you know, 40 draw calls is a lot for mobile and Quest.
For mobile - aiming below 50 draw calls is a must if you want to have stable 60+ fps on medium-end hardware.

In the end, if its 40 different objects - they’re most likely broken down into multiple draw calls (usually due to shadows & shadowcasting, lightmapping, multiple materials, ztesting overlaps etc). Which results in more than 40+ draw calls in the end.

Our artists use single texture with all colors, and then map UV’s of the models to those colors.
1 texture == 1 material == single draw call (unless broken down due to other cases)
Works like a charm, but that requires making or modifying assets on your own (obviously).

If manually mapping them is not an option, seek atlas combiners from the asset store.

Also, abusing Dynamic Batching + single material for mobile - its a must for built-in render pipeline, if you’re not using it yet - definitely should try. Its free batching (except models has to be split into <300 verts).

Few other tips:

  • Lightmapping usually increases draw call count (unless all scene is packed into single atlas, which is unlikely. Usually);
  • Using “fake” simplified shadows under <300 verts + using Dynamic Batching makes shadows pretty much free. Since they’re batched together when single material is used. No baking required, full dynamic and sweet (if only directional light is used).

It sucks that Unity does not have automatic 3D atlasing though. All logic is in place (e.g. automatic uv lightmapping, 2D texture alignment etc). I guess tech is not there yet.

1 Like

The tech is there, it’s just “there” isn’t “in Unity” because there’s no overt financial incentive for adding it.

1 Like