Hi everyone!
I'm currently working on a 3D third person shooter project in Unity, and I've began looking into optimizing my scenes, as my frame rate wasn't ideal. Baked lighting and baked occlusion culling aren't an option as the game's world is procedurally generated from prefabs, so optimizing everything else as much as possible is very important.
Currently I've been joining meshes and creating LODs, and I'm looking into texture atlases. Sadly, I haven't found much information on this topic other than "mixing various textures into one = less draw calls".
My project is a PC game which ideally could be ported someday to consoles such as the PS4, Wii U or Xbox One. So no mobile restrictions.
So here are some questions I couldn't find answers for, or want to make sure I understand:
- Usually, how big are texture atlases in modern 3D games?
- I know textures should be square in Unity for better performance, but what about texture atlases? Would a 1024 x 512 texture be more expensive than a 1024x1024 that isn't fully used?
- I assume having textures that need a transparent material shouldn't be in the same atlas as textures that don't, so a tree's trunk texture shouldn't be in the same atlas as the leaves, am I correct? Do developers usually make an atlas for transparent textures on one side, and opaque in another? So for example "vegetation01_transparent.jpg" and "vegetation01_opaque.jpg"??
- In my project, the player can pick up different kinds of armour, and he can have up to 5 pieces of armour of different sets equipped at the same time (e.g. metal helmet, bandit gloves, short trousers...). There'll be at least 50 pieces of armour in total in the game, highly unlikely to find pieces of the same armour set. It wouldn't make sense to group these in atlases, right?
- What are the best practices to establish what should be in an atlas? Is it just "things that use the same shader and usually appear near each other in the game"?
Thanks for you time, I hope you can all give me some insight into the best practices when it comes to this! ![]()