World Composition vs. Level Streaming for urban areas

I’m working on a (fairly) large urban map, about 16x16 city blocks in size, and I’m conflicted on how I should be breaking it up. I’m not using landscapes at all, and all of the individual meshes that make up the world are small and modular, so in theory there’s no need to use world composition. That having been said, I’m having a really hard time preventing the player from noticing pop-in if I use level streaming; since cities by definition have long horizontal sightlines, the only way I’ve been able to keep people from seeing the geometry build around them is to cover the persistent level in a gridwork of giant streaming volumes which ensure that a level gets loaded in if there’s even a chance that the player will get close enough to see it within the next few seconds, and that’s basically what world composition does.

So is there an obviously better solution here? Either way, the problem seems to come down to figuring out which system is better set-up to handle the long view distances.

World composition is not only about landscapes. You can safely use it for what you are trying to achieve. Instead of blocking eyesight to the distant level, you could have LOD of this level streamed in much earlier than a level itself, allowing whole city to be rendered at once. Transition between level’s LODs will not be seamless and some popping will still occur, but if done correctly, it will be minimal.

Using multiple LODs is a really good idea… assuming I used world composition as you suggest, is the assumption that I would handle interior spaces by giving each interior (for example, each floor of a building) a very small range to load in, so that interiors only get streamed in when you’re about to walk into them?