Best practices for developing optimized interiors for Unity?

This is quite a broad question, and I will try to break it down later on for clarity.

I’m basically looking for some tips and advice from those who have had experience in either Arch Viz or simply modelling and texturing of level or architectural interiors for Unity. I’ve been studying the only two example projects with proper detailed interiors (Airstream Camper and Shadow demo), I can’t find any others. I’ve found two techniques these have in common:

  1. Using smaller, tillable textures (as oppose to UV textures) and sharing them with as many objects in the scene as possible
  2. Combining all the objects by material

The above techniques aren’t specific to just interiors obviously, but that is what I’ve found so far. The problem with these demos is that they’re only one ‘room’ or interior and at runtime hit between 200-300 draw calls already. With the above demos in mind, here a few more specific questions:

  • What techniques are needed for a building with multiple rooms that need to look different (considering the already high drawcalls above)?
  • Should each room be a separate object or part of the entire building?
  • Are shared textures better practice or one separate UV texture for each object?
  • How to handle culling when outside the building/room (since the interior objects may still be in the camera frustum but hidden by the building wall anyway)?

Apologies for all the sub-questions, I figured that since these are all related it would save web space to just create one question for all of them. Hopefully a person or two can lend some advice :slight_smile:

Looking forward to hearing it. Thanks for now.

Some notes:

  1. 300 draw calls for a room is what I would label “unoptimized.” Don’t use those projects as examples of how to budget a scene.
  2. Typically rooms are separate from the building for culling and optimization. This includes the interior walls, floors, and props.
  3. Regarding sharing textures or separate textures, this is an issue if you have physics objects. If the props in your room are all static, then attaching them as one mesh for each room and using one material is typically best for performance, but not for memory as each room will have a unique mesh. It’s the textbook memory vs. performance tradeoff. The only caveat is if your rooms are huge and you’re doing culling based on the bounding box of the meshes. If you attach meshes together and their bounding box is huge, it’s likely that it will always render. If you’re just portalizing, it’s probably not an issue. In the end, I would probably attach models together, but only to a limit. Instead of reducing to 1 or 2 draw calls per room, perhaps 3-5 are ok so they can be culled using a smaller bounding volume.
  4. Not sure how to answer this one as I’m an artist not an engineer.

Hope this helped!

Another good solution for those trouble shooting this problem:

M2H Culling System, available free from the asset store and for Unity Indie!