Jump to content

Fallout 4 Optimization and Performance Systems Explained


Recommended Posts

I'm seeing precombineds pickup any custom loose textures (or those that may be loaded from a BA2 if working on a mod that has one) and permanently bake them. If I remove textures/materials, newly precombined refs show up purple.

 

Only way I found to get it to ignore stuff is by disabling as you mentioned. Halgoth and I ran a bunch of tests on layers, It does indeed include multiple copies of the same object if more than 1 is on different layers. A lot of times Bethesda has not disabled duplicates of even full buildings in their layers, as if the precalc system was gonna make up for it regardless. We investigated this due to Z-fighting originally.

 

Now lets bring up Valyn81's downtown regen. THis is a reasonably popular mod, all he done is run a new gen downtown. His "honest" users are reporting 10FPS better performance (some clowns reporting 40FPS plus, they must already have something breaking precalc). I'd like to know the science behind this increase. So here is a list of theories:

 

1. As jonwd7 earlier suggested, physics files for the precombineds are better through the CK gen.

2. Packing just the precalc for one area into a BA2 significantly improves the lookup and load times (as opposed to searching a larger/fragmented BA2)

3. As chucksteel suggested, Bethesda has added more stuff after a gen and not regened.

4. In regard to 1st idea, perhaps our generated files are less compressed.

 

Also in regard to Valyn81's mod, he has reported that there are various physics bugs that have shown up with his regen. Such as fires becoming static, and "bus stairs" on the broken buses seemingly not having collision (I'm not sure thats 100% correct, that's just from memory). Anyway I can attest I get a smoother experience regening downtown (as I use Better Goodneighbour I hav done down here), I wouldn't put a number of FPS but it is generally smoother to the point of being noticeable.

Link to comment
Share on other sites

I can confirm that Precombine Generation can sometimes break collisions for objects. it's only been stairs that I have notice this happening on. I had fixed it by duplicating the stairs, disabling the originals, and regening Precombines. I assume it is just a bug that randomly pops up in the Physics part of the generator. As to why it only seems to affect stairs is a mystery to me.

Link to comment
Share on other sites

I can confirm that Precombine Generation can sometimes break collisions for objects. it's only been stairs that I have notice this happening on. I had fixed it by duplicating the stairs, disabling the originals, and regening Precombines. I assume it is just a bug that randomly pops up in the Physics part of the generator. As to why it only seems to affect stairs is a mystery to me.

Thanks for the confirmation. More reasons to shake my head XD

Link to comment
Share on other sites

 

I did think of deleting objects in a temp version of my mod to use for Pre-Combined generation. This would be vary simple for me because I use the layer system extensively when building my stuff. I could simply select all in my furniture layer and delete but, that seemed like a pain.

 

This is the method I used on remaking precombineds for Vault 88 and the Mechanist's Lair, and it is every bit as painful as it seems it would be. Of course, since I was trying to ensure certain things would be scrappable, I'm not sure if there was a better way to do it.

Link to comment
Share on other sites

 

 

I did think of deleting objects in a temp version of my mod to use for Pre-Combined generation. This would be vary simple for me because I use the layer system extensively when building my stuff. I could simply select all in my furniture layer and delete but, that seemed like a pain.

 

This is the method I used on remaking precombineds for Vault 88 and the Mechanist's Lair, and it is every bit as painful as it seems it would be. Of course, since I was trying to ensure certain things would be scrappable, I'm not sure if there was a better way to do it.

 

I seem to have issue with using "Delete" as opposed to "Initiially Disabled", proven by my Monsignor OCc Box Disabler - when deleted has issues, when disabled gens fine. Or maybe you were referring to "delete" as "disable", but wanted to note this anyway for good measure.

Link to comment
Share on other sites

So, jonwd7 just released a new update for Nifskope (v2 dev7). You can now look at (and edit) CK-generated precombineds the same way you could do normal precombineds. It's of limited usefullness, since the CK still packs almost all the collision data for precombineds in a cell into the CELLID_physics.nif, but it's definitely useful in certain situations. If nothing else, you can just poke around in them like I did with the vanilla precombineds.

 

It's also got tons of other tweaks and new features, the full list available here: https://github.com/niftools/nifskope/releases

Link to comment
Share on other sites

  • 3 weeks later...

While pondering how to optimize a worldspace I'm building I wondered if there is some general consensus on when to precombine. Or, you know, some general workflow I should try to stick to. Currently, as the worldspace won't have lots of architecture but quite some landscape pieces. My plan is to build the entire landscape (rocks, trees, plants), precombine and then proceed with architecture. To conserve objects, I'll try to only use SCOLs (which should result in less draw calls, as the engine has to render only a single NIF). Is this sound?

 

 

What I've found out experimenting is that you can not use Material Swaps in any way on statics that get precombined. I used some RockCliffs for a coast line, copied the original STAT, applied the "RockCliff_Wet_DLC03" (or similar) MSWP to the STAT record. Then ran precombine. The resulting combined mesh would always use the material file referenced in the NIF file, never the one in the STAT record or the one applied to the placed Ref. I started working around that by creating new NIFs with the "wet" material baked in, so those cliffs precombine nicely. It works but feels extremely clunky.

 

 

Am I correct with this or did I do something wrong? Is there a better way to get precombines with specific materials?

 

//edit: Just saw that chucksteel did find this exact issue on the previous page. Cheers, dude. :) So, second question is already answered, first one still stands.

 

 

//edit 2: The precombined NIFs retain all BSLightingShader nodes of their source meshes, so in theory I could also precombine, then swap out the materials in the precombined NIF - but that's more work intensive in the long run I guess.

Edited by payl0ad
Link to comment
Share on other sites

Chucksteel is correct. I have found that if you put objects that have material swaps in their own Layer, and then disable and hide those objects before generating precombines, then enable, and unhide them... Their material swaps won't be affected.

 

 

 

This isn't a problem for small cells that may only have a couple of objects with material swaps, but it becomes more of a pain in the cells with a ton of clutter.

 

I've been experimenting with this for my current mod and it does work as described. A workaround for cells with lots of things you want to disable as in the case of lots of clutter would be to parent the refs in question to an enable marker, then set the enable marker to Initially Disabled. You can use the batch feature to parent lots of items at once. The CK will ignore parented items when generating precombines, and will indicate them as such with a report in the Warnings pane.

Link to comment
Share on other sites

Yes, you could do it this way - but landscaping typically uses lots of similar objects that stick into one another a lot of the time. Landscape objects are also pretty big, so they occlude a lot - which in sum means I will want to generate optimizations using as many statics as I can. At least theoretically. In my case I think it's better to bake the desired material into the nif so I can combine those meshes and have the correct material. I use those statics for coast lines, of which I have quite many. The few MBytes this will add to the mod size will be worth that effort I hope. You'll see eventually.

 

 

 

Still I'd like some feedback on my approach; do SCOLs actually conserve performance by reducing objects to draw? Is it smarter to precombine right in the middle of development (e.g. when landscaping is finished) or save all that for later and exclude material swapped objects from precombination manually?

Edited by payl0ad
Link to comment
Share on other sites

  • Recently Browsing   0 members

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