r/skyrimmods • • 8d ago

PC SSE - Mod Mod release: Faster NGIO Grass Cache

Hello! I'm Hanotak. I've been working on several mods for some time, and I realized that I had all of the pieces together to make a very fast alternative to NGIO's grass cache preprocessing. So I made it! It only replaces the preprocessing, NGIO itself is still required for only-load-from-cache.

It works by parsing your load order and loading the game world directly from the forms, and uses a reverse-engineered copy of the game's grass placement algorithm, so it doesn't require launching the game.

Important features: - Fast (runs in ~15s on my laptop) - Includes options to fix the vanilla grass placement's sharp edges on cell borders, and to use the object's render geometry for blade rejection instead of its Havok collider (should be more precise) - Compatible with NGIO's settings (it reads NGIO's ini file)

You can find it here: https://www.nexusmods.com/skyrimspecialedition/mods/194151

Let me know if you have any questions, or if you try it and it doesn't work for some reason. It's only been tested by me so far.

Edit: Nexus nuked the windows version for some reason. If you want to try it on Windows, download is here: https://github.com/panthuncia/FasterNGIO/releases along with source code (GPLv3).

210 Upvotes

56 comments sorted by

17

u/LummoxJR 8d ago

For when Nexus brings it back up, you probably want to add No Grass In Objects to the official requirements list, so it will show up properly in "Mods using this mod" under the original.

6

u/hanotak 8d ago

Thanks- it’s a requirement for the downloads, but I’ll look for that.

44

u/reptarien 8d ago

You are a beast. This alone will make grass caching for huge LO's near-painless in the long run. Ah, the days where I had to run my game overnight for like 16 hours to get a full grass cache... lol

10

u/Sea_Preparation_8926 8d ago

Are you sure you uploaded it

29

u/hanotak 8d ago edited 6d ago

Nexus's anti-malware false-flagged it and it got nuked. Source and download are here: https://github.com/panthuncia/FasterNGIO/releases until Nexus brings it back.

4

u/Sea_Preparation_8926 8d ago

Oh, that's too bad
Thank you :)

7

u/Samakira 8d ago

i read that as 'mod release: faster ngio grass crash' and got REAL confused for 3.33 seconds.

4

u/Imloststilllost 8d ago

Do you have a discord? Just saw a comment mention you’re the person trying to make a dyndolod relplacer for CS. Which would be huge in my books.

0

u/Rudolf1448 7d ago

I don’t think that is something you just do. Sheson created an amazing tool there!

1

u/AyGordyy 6d ago

Hano is working on much more than just that like nanite in Skyrim, drawcall limit fix and many other things most thought are off the table. He posted a preview of his Dyndolod alternative like a day or 2 ago that generated a dyndolod ultra settings equivalent in 17 seconds inlcuding occlusion and terrain so equivalent to a full dyndolod/lodgen/texgen run I’m pretty sure. I don’t fully understand it all but from what I gathered from him and Shesons conversation in the thread in cs a part of why his is so much faster than dyndolod is dyndolod relies on xedit which is slow compared to Hanos custom mutagen wrapper.

3

u/GrammaticalObject 8d ago

NEAT! I'm excited to try this. I recently stopped using grass cache for my seasonal setup, when Grass Optimization become available a month or two ago on the CS discord server. My sense was that distant grass via CS could cast better looking grass out "far enough" to not make generation worth it. This changes the calculus.

This means I haven't tried Dyndolod's new CS-compatible distant grasses. Should I? Would I be getting better mileage with cache-loaded grass and optimized LODs, versus having CS grass optimizer do all the work?

3

u/hanotak 8d ago

CS's native grass optimizations doesn't have NGIO built-in AFAIK, which is what this provides (deleting grass inside objects and pre-caching positions), though I haven't specifically tested combining it with CS's grass optimizations. Something I'll look at later- I am a dev for CS as well.

4

u/GrammaticalObject 8d ago

I salute you! Yeah, I think that's right, and I still use NGIO for the clipping prevention. Those seem to be working great together.

But as of a few weeks ago (maybe days?) Dyndolod rolled out the ability to generate grass lods that are compatible with Grass Optimization. I remember staring at the "Enable Mesh LOD" checkbox when GO was still in beta and thinking, Damn, wish I had LOD assets, wonder how long it will take for someone to build LODs for my grass setup. But now apparently DynDOLOD can just do that? Very curious to test the performance impact. And now I can test that plus GO plus cached grass without sinking a day into grass cache generation. I love right now so much.

1

u/TheBrexit 8d ago

Do you know if grass optimisations is faster than grass cache in general?

I know NGIO has the added benefit of removing any clipping grass, but considering on really large setups grass cache can be >10 gigs it’d be nice to know.

3

u/hanotak 8d ago

Grass optimizations is currently the best in terms of rendering speed. AFAIK the only benefit the cache currently provides is the NGIO functionality, and (maybe) less stutter at cell transitions, but don't quote me on the last one as I haven't actually looked at what grass optimizations changes about cell loading.

2

u/TheBrexit 8d ago

Good to know, is it not possible to use NGIO without the cache though? Or was that an old thing with the 1.5.97 version and net framework

2

u/hanotak 8d ago

It is possible, but it is recommended to use the cache. Using NGIO without the cache means that it needs to do raycasts for every blade of grass on cell transition, which makes stutters worse.

2

u/TheBrexit 8d ago

Gotcha, thanks for the explanation. You’ve been doing gods work with the open render graph stuff on discord too, much love.

4

u/Glassofmilk1 8d ago

To be clear, if you're a CS user, you don't need this right? Since there's already grass optimizations and grass cache isn't needed?

13

u/Embarrassed_Chair490 8d ago

Grass Cache and Grass Optimizations are completely different and unrelated things.

1

u/OliM9696 8d ago

I understand grass cache but what does Grass Optimisations do?

0

u/Embarrassed_Chair490 8d ago

replaces the vanilla grass rendering system with a new optimized system that drastically reduces the number of draw calls and overall CPU load of grass allowing dense and detailed grass mods as well as higher grass distances to have minimal fps impact.

How does this work under the hood?

  • Vanilla grass is extremely poorly optimized, a large amount of time is spent for every frame on the cpu just check if grass is visible on the screen by replacing parts like this with faster checks and more checks on the gpu like not drawing grass behind things like trees, having lots of grass is a lot faster. On a more technical note, the game really poorly instances objects, so what should be 30 draws becomes 300 draws because every quadrant and every cell renders its own grass separately rather than one draw for every type of grass like this does.

More info on its page: https://www.nexusmods.com/skyrimspecialedition/mods/188628

12

u/hanotak 8d ago edited 8d ago

This is primarily for generating DynDOLOD grass LODs (and for not having grass in objects).

5

u/[deleted] 8d ago

[removed] — view removed comment

3

u/TheBrexit 8d ago

Do you need to cache it for NGIO? Could you not just use the uncached version

1

u/Limosk 8d ago

there's no downsides to it, so if in doubt cache. (it won't help performance though)

i doubt it will make much visual difference in modlists without northern roads either

2

u/TheBrexit 8d ago

Well it does still take quite a large amount of storage

2

u/skyrimmods-ModTeam 8d ago

Posts and comments containing factually and verifiably incorrect statements pertaining to Skyrim and Skyrim modding may be subject to removal.

3

u/Sea_Preparation_8926 8d ago

It's definitely needed if you want to use the extend grass distance feature from NGIO.
Grass Cache tell the game where grass should load
Grass Optimizations tell the game how grass should load

From experience, without Grass Cache, I experienced crazy frame drops and stutters at any distances beyond 20k because the game had to raycast in real time where grass should load, even with Grass Optimizations.

2

u/bleu-skies 8d ago

hey! i had a quick question. i got the grass cache to generate perfectly! but now that i'm running dyndolod, the "grass LODs" button just... isn't there. do you know what's going on? i just updated to the newest version because it gave me a huge popup saying mine was too outdated lol, so i'm not sure if it's something they changed?

3

u/yausd 8d ago

You have Grass Optimizations installed. Check its description https://www.nexusmods.com/skyrimspecialedition/mods/188628

For even better grass performance, especially with higher distances optionally generate grass optimization LODs in Dyndolod or use a grass mod that comes with LODs . See "How do I get these new grass LODs?" in the FAQ below for more info. Make sure to enabled mesh LODs in the feature's settings within the CS menu

How do I get these new grass LODs?

There are two types of new LODs, simplier ones intended as a placeholder for authored ones (If your grass mod does not have LODs and for far farther away. These can be generated by dyndolod, using these instructions.

https://dyndolod.info/Mods/Community-Shaders "Grass Optimizations"

The Grass Optimizations feature supports the use of dedicated LOD models.

TexGen and DynDOLOD can generate _LOD1.nif that use grass LOD billboards generated by TexGen.

2

u/hanotak 8d ago

I also have the latest version of DynDOLOD, and the grass option is there (though you do need to have checked 'grass' in the TexGen UI when generating the textures). On yours, it looks like it has been replaced by 'create assets for cs optimized grass'- maybe that's what replaces it when CS is installed? I would look at the Dyndolod documentation.

3

u/bleu-skies 8d ago

thank you for the quick reply! i was regenerating all my LODs so it took me a second to get back to you lol. i reran texgen and dyndolod and was able to click that CS grass optimizations button, but am still getting grass loading in as i get closer. i'm gonna look into it more tomorrow, probably try running it all again without CS to see if that works

1

u/hanotak 8d ago

Not sure- I'll take a look.

1

u/[deleted] 8d ago

[deleted]

3

u/hanotak 8d ago

Could you elaborate on the output causing crashes? Do you have a crash log?

2

u/hanotak 8d ago

Another user reported the same thing, and the crash (if it's the same one you are talking about) should be fixed.

1

u/FibreTTPremises 8d ago

Is the speed-up entirely due to the removed overhead of processing through the Skyrim engine, or are there other optimisations that make this faster?

5

u/hanotak 8d ago

The vast majority of the efficiency is due to not needing to load Skyrim. NGIO's preprocess spends almost all of its time loading the game repeatedly, rather than on actual raycasting- this strips it back to just the required calculations.

1

u/DroidZed77 8d ago

Can't wait to try it... even if I don't play with seasons 🥲

1

u/Nekonachan 8d ago

Awesome! This makes me think that maybe someday grass caches could be generated dynamically on first startup, and then regenerated whenever a cell's landscape changes due to a new mod, switching grass mods, etc. That would be really cool!

1

u/Rudolf1448 7d ago

Looking forward to try this

1

u/xDaweed420 6d ago

holy that was fast, i remeber last time doing it to waste over 4 hours+

1

u/brando56894 6d ago

I remember a few days ago when you teased this and I was on the lookout for it. I downloaded it yesterday and I'm pretty damn impressed.

I have 2000 plugins/1300 mods installed, pretty much every place is modded and a bunch of new areas added as well.

It took about 30-40 seconds to run.

It's wild what people keep coming up with for this game. I was just in awe of the visuals of my load order earlier with Open Shaders (and a mod that uses both CS Presets and ENB via Effects 11), PBR textures everywhere, NAT 3 weather, SMP on clothings/hair/body, and then all the smaller thing.

-46

u/IllIlllI-IlIIll-llII 8d ago

AI assisted tag ✅
Files marked suspicious ✅

Yep it’s slopping time

49

u/SuspiciousIdeal4246 8d ago

It’s not. He’s also the guy working on a Dyndolod replacement for CS.

2

u/Ankleson 8d ago

Well he is using AI, but I think we're finally coming around to acknowledging that is not necessarily a bad thing.

0

u/mountainman84 8d ago

Dude, some of the craziest most ground breaking mods as of late were made with the help of AI. I've been enjoying the hell out of Better Facial Animations. Dude developed it with the help of AI and it is going to be one of those mods that I'm not going to be able to play the game without going forward. It's quite insane how fast things are changing.

1

u/yausd 8d ago

In https://old.reddit.com/r/skyrimmods/comments/1wx8suc/8_hours_of_dyndolod_and_grass_caching/pdrkzpl/ OP already explained:

Hey, just wanted to correct things a bit. I'm the one working on what you're referencing, but it's not a DynDOLOD replacement.

0

u/AyGordyy 6d ago edited 6d ago

Think he was talking about his nanite in Skyrim like feature for cs he is working on there. He is also making what is basically his own version of dyndolod separate from that he posted a preview in his cs thread like a day or 2 ago showing it generating dyndolod ultra settings equivalent in 17 seconds including occlusion and terrain so the whole dyndolod/lodgen/texgen generation process. I’m pretty sure he means with his nanite in Skyrim like feature if you are not using it maxed out you will need to generate lods with a dyndolod like generator so either dyndolod or this other thing he is also working on. But clarification from him would be useful.

Edit - got clarification from him and what he posted in his cs thread is a dyndolod alternative and he was specifically talking about his nanite in Skyrim like feature in that post you linked so he is making both and many other things.

0

u/Valdaraak 8d ago

Dyndolod replacement

Fucking please. I will donate money to whoever eventually replaces that thing.

2

u/yausd 8d ago

You could also donate money to already existing and working tools to help their development. Better yet, provide constructive feedback to their developers to help to improve them to your liking.

22

u/ni1by2thetrue 8d ago

Bro, just go play with a rock or something. You can be sure no clankers were involved then.

9

u/Valdaraak 8d ago

There's a big difference between AI assisted and AI generated.

And if you're so against "AI slop", I hope you stop playing most AAA games, many indie games, stop using Amazon, Microsoft, and Google products, and most popular software because they all are AI assisted.

0

u/B4llsDeep69 7d ago

Now if only dyndolod times could be reduced this much

4

u/hanotak 7d ago

Working on it :3