Walls! Best practices?

I’m making a VR thing inside an apartment building. The player will never go outside, but there are lots of windows for sunlight to come in and for the player to look out. So there needs to be an exterior environment with a sun and all that. And it got me thinking about interior walls, so I was hoping to have a discussion about best practices here.

Option 1: In my bones, I feel like I should be able to make a one-sided plane (with normals facing inside the room) and use it modularly for all the walls, floors, and ceilings. I feel like this is the most efficient way, and when I noclip in other games it seems like they do that too. But! Of course, sunlight shines right through the “invisible” side into the interior so lighting is a mess. Also I guess lumen needs 10cm-thick geometry to work correctly, which seems like a bit much, but certainly takes one-sided planes out of the race.

Option 2: Same as option 1, but using two-sided materials. Opinions on this? I had it in my head that there was either a resource or a performance cost to this, and the manual still says it doesn’t work correctly with static lighting. But maybe none of this is an issue with lumen now?

Option 3: Using 3D boxes instead of single-sided planes. I see this used a lot but it feels wasteful to me with all the geometry that is never going to be seen by the user, also I don’t usually see this used in commercial games, but maybe I’m not looking hard enough. Also a bit less flexible in my opinion for modular design, requiring more specialized assets for things, e.g. corners so you don’t have the side face of one box fighting with the front face of the other box when combined at a 90 degree angle.


What we did for our game is actually a mixture of all that!

All the walls, ceiling and floor are one sided plane:

But we did an exterior plane just to block the light:

Since the two sided material add a drawcall, we decided to go with a very very simple geo with one very ultra simple material only to cast shadow.
Then in the detail panel from this mesh, we enable ‘Hidden Shadow’

So we can disable the ‘visible’ option and it still cast shadow:

But recently, using Lumen I noticed that some light were bleeding and I could not figure out what caused it. So I split all the exterior as pieces and let them visible and it fixed the bleeding.