I am trying to work on strategies to improve the quality of materials and lighting in my scenes to increase the realism. I typically am creating extremely large scenes from projects like a 100,000 square foot building. Currently, I have not found a good way to be able to bake a scene of this size with that many complex meshes coming from Revit. This is why I am typically changing my lightmass settings to “Force No Precomputed Lighting.” My scenes can run fine on really nice machines, but the FPS only hangs around the 40s and the lighting doesn’t look that great. And from what I’ve read, you will never get as good of lighting as you would if you would bake the scenes. Has anyone had much luck creating realistic scenes of a project of this size?
You would need to find out what the performance cost is due to. The number of objects will have a dramatic impact on performance(draw calls), so if you have a bunch of low-poly objects then it helps to merge them together into one object. Start first with objects that have the same material and merge them together. The second issue can be the complexity of objects–so high poly counts will use a lot of memory. These days, memory usage isn’t as big of a problem, you can have something like 1 million polygons visible just fine. So it’s preferable to reduce the number of objects even if it causes an increase in memory usage.
The last thing though is what hardware you’re using, you might need to get a better graphics card or something like that.
I would also look into something like VXGI for lighting, it will give you better dynamic lighting though it has a high impact on real-time performance. If you have a really powerful machine (think something with a GTX 1080 graphics card) then you can probably use VXGI in real-time and get good framerates. If you don’t have all that powerful of a machine, you can still use VXGI for still images and pre-rendered animations and it will be much faster than having to bake the lighting.
Here’s the stuff on VXGI:
I actually should be getting a new computer with a GTX 1080 today. I looked into the VXGI stuff and got it downloaded, but am a little confused on how to implement it. Do I have to install it or put it somewhere in a project folder to use it? I’m searching for some more documentation on it now, but it looks like something I could definitely use.
You download the source and it’s basically the UE4 editor with VXGI added in, once you successfully build the source then you will have a version of the editor with VXGI built-in so you don’t have to drop a plugin anywhere or anything like that. Last time I did it it wasn’t super easy because I’m not really a programmer so I couldn’t figure out what was going wrong when it didn’t work, not sure if it’s changed to where you can just load it with Visual Studio and click build but I remember having to change something when I did it last.
To echo what darthviper107 said, your first step should be to break things down and simplify what you can. I would also suggest deleting objects that you don’t necessarily need to have in the project - whether they are redundant or not readily visible to the user.
And what I mean by merging things together–you would want something like a few hundred objects, so you don’t necessarily want to attach absolutely everything to one object, but just combine some things where it makes sense. Like if you can have only a few separate objects in a room then that can help.
Theoretically, would performance improve if all objects *were *merged together? I agree - don’t. But theoretically, that would negate draw calls, right?
Not necessarily, if they’re split up then the engine can unload meshes that aren’t within the current view and improve performance. Plus, if you’re using a lot of materials then each material counts as an additional draw call. So I would take a logical approach to combining objects, look at what uses the same material, and what’s in the same general area first.