Jump to content

Fallout 4 Optimization and Performance Systems Explained


Recommended Posts

The INI settings seem as though they should make some difference, but when I've edited the settings before I haven't noticed any in game changes. Maybe it's due to a problem on my end, though.

Anyways, here's an article that describes some occlusion culling terminology.

http://docs.cryengine.com/plugins/servlet/mobile#content/view/1605709

From the sounds of it Z-shift may have a big impact on culling accuracy, if someone can figure out how it works. Maybe you need to change that setting in the CK and then rebuild Previs there?

 

e: Well I'll be damned, I've put some of these settings into the CK and I might be seeing a difference. I won't have time to do more testing until later, but there may be a 10~ FPS difference in the single cell I've edited.

 

e2: Okay, bumping up the fPreVisCameraZShift to from 18 to 90 nets an additional 5-10 FPS in certain spots. Changing fPreVisCameraZShift to 768 doesn't result in higher FPS. The draw call count doesn't appear to change in either situation, so I'm kind of confused.

 

Increasing fPreVisCameraBufferNear does not seem to have made a positive impact, while dropping it to 1 may have. It's a little hard to tell since the game's performance is already so dramatically inconsistent/

Edited by Giggilyomeromicon
Link to comment
Share on other sites

5-10 fps is quite substantial for some places. I'm just wondering if you'll see more occlusion bugs with any changes to those settings.

 

I end up getting carried away last night and looking around for damned edits that could disable that dumbass crafting/workshop shader overlay, but those functions all seem to be tied up within the shaders file.

Link to comment
Share on other sites

5-10 fps is quite substantial for some places. I'm just wondering if you'll see more occlusion bugs with any changes to those settings.

 

I end up getting carried away last night and looking around for damned edits that could disable that dumbass crafting/workshop shader overlay, but those functions all seem to be tied up within the shaders file.

 

Unfortunately, after doing a lot more testing, it turns out they were false positives.

 

I have had a lot of success, though, in doing some basic optimizations with occlusion boxes in the Creation Kit. Inserting occlusion boxes into some of the more geometrically complex and compact buildings can have more consistent results than the Previs system alone. Inserting planes that slightly extrude from the corners of buildings can also help the system cut off more blocked objects around corners.

 

Besides occlusion planes, I've also had pretty good success with sight blocking in the area outside of the financial district. Inserting walls that are approximately the height of the surrounding buildings, or simply introducing more buildings, can cut back on drawcalls pretty significantly in areas like the Fens.

 

As for the Financial District and North Boston, which is where performace really takes a dive, redesigning some of the buildings in the area would go a long way to fixing performance problems. Right now there are a large number of superfluous bombed out buildings that don't have any markers or functions other than to appear bombed out. The issue, though, is that many of these buildings have walls that are too thin to cull the objects behind them. There are also a number of structures that are unnecessarily geometrically complicated. And, while that looks nice, it has a huge impact on performance.

 

These buildings are among the worst offenders:

 

http://i.imgur.com/2c0l9Yx.jpg

http://i.imgur.com/9eAAfwf.jpg

 

Because of their design they contribute thousands of draw calls to a scene as they are either very complex, or their walls have enough openings and gaps that no culling takes place.

 

Another huge problem is the elevated highway. A single chunk of the highway is approximately 36,000 triangles, and this isn't including the pylons. To give this a bit of reference, the entire model for some buildings are only about 3000 triangles. To compound this issue, because the highway is very thin it does not really self occlude, and because it's one massive chunk, it seems usually be fully rendering or not rendering at all. So while you are usually only seeing around 750-1500 triangles of the building, you are getting nearly all 36,000 triangles of the highway. And that's just the smallest chunk of highway, some of the other pieces are 2-3 longer, and there are about a dozen in the financial district.

Edited by Giggilyomeromicon
Link to comment
Share on other sites

I'm curious to know, have you tried to recombine meshes and vis after you have applied those occlusion planes? That's where I found they don't mix. Guess you just keep a plugin with your Occ boxes/planes additions separate and load it in after any recombinations. I tend to keep all my newly gened precalc in patches rather than modifying the original esp. Easy enough to merge them, easy enough to blow them away

Link to comment
Share on other sites

Here is some new information:

 

-Editing a precombined mesh and leaving it loose in the right spot (meshes\Precombined for vanilla cells) will make that changed mesh get loaded by the game (updating the PCMB isn't needed, though I'd guess it would if you have packed precombineds, in which case the CK is going to updat eit for you)

-Editing the XCRI record lets you individually edit which references and meshes are used.

-Adding something to the reference list without it being in a precombined mesh essentially disables it

-Removing something from the reference list without editing the relevant precombined mesh to remove it will result in both the precombined mesh and the regular mesh loading. So you can scrap it, but it will still be there.

-You only need to include the meshes you have changed when making a worldspace mod where you regenerated precombined meshes. So if you edit a location, and the noly thing you change is removing one building, you would only need three things: a new .uvd (assuming the building had occlusion data generated from it, otherwise the original is fine), the new version of the precombined mesh, and a new CELLID_physics.nif

-that f*#@ing physics.nif is the biggest reason the ability to individually edit/remove precombineds doesn't make a huge difference on compatibility with multiple mods regenerating precombineds for the same cell*. The xxx_physics.nif (most of the time**) contains all the collision data for every single precombined mesh in the cell.

 

*beyond the fact that this shift has to be done with nifskope/xEdit outside of the CK

**I say most of the time because I recently found a precombined mesh in NukaWorld that contains collision data. Most of the NukaWorld precombineds still don't, but some do. So it might be possible to add precombined meshes without a new physics nif (though unless you are adding so many that it's much better to use the CK, it'll probably have minimal impact).

Link to comment
Share on other sites

I'd like to add that I'm a few weeks into this downtown optimization project. In this time I've probably placed around 100 occlusion planes and made many more cell edits. I am still encountering no bugs with Previs or Precombined mesh generation.

 

I have no idea why things are working now, but it may do with the ugridstoload setting in the CK. I have mine set to 3, where I had previously encountered problems at 1 or 5. Not sure if that's just corelation or causation, however.

 

In terms of performance gains, some spots have improved anywhere from 10 to 30+ FPS. Some big improvements have been made by creating occlusion boxes which stick further into the ground. For whatever reason these contribute a great deal to the game correctly culling distant objects, like LODs.

 

I've also had very good results from nuking unnecessary architectural complexity. Buildings with open interiors not hooked up to anything, properly nav meshed, or event visible without disabling collision, are surprisingly common. Filling in these gaps and replacing the 3D walls with planes has massively improved performance in certain places, as the amount of objects drawing and their ability to cull objects greatly improves.

 

I'm pretty hopeful that these changes will be able to greatly improve performance for a lot of people, and that the end result won't have too large of a file size. Right now I have about 768 megs in precombined meshes, but I haven't cut out those without edits.

Link to comment
Share on other sites

I'm pretty hopeful that these changes will be able to greatly improve performance for a lot of people, and that the end result won't have too large of a file size. Right now I have about 768 megs in precombined meshes, but I haven't cut out those without edits.

Luckily, you won't have to do it manually. There is an almost-done xEdit script that will help with pruning the unchanged meshes.

Link to comment
Share on other sites

 

I'm pretty hopeful that these changes will be able to greatly improve performance for a lot of people, and that the end result won't have too large of a file size. Right now I have about 768 megs in precombined meshes, but I haven't cut out those without edits.

Luckily, you won't have to do it manually. There is an almost-done xEdit script that will help with pruning the unchanged meshes.

 

@VlitS

 

Where do I get this magical script? :dance:

Link to comment
Share on other sites

I just wanted people to know that I haven't abandoned this topic. I've been lurking and reading and I'll eventually get around to updating the original post with additional useful information as a summary. :D

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...