Oblivion
0 of 0

File information

Last updated

Original upload

Created by

discovery1 and maczopikczo

Uploaded by

maczopikczo

Virus scan

Safe to use

About this mod

Greatly optimised groundcover! Featuring Discovery1's gorgeous Imperial Ecology (Vanilla Flavour) meshes and textures as texture atlas!. Performance boost! Roll in it, people.

Requirements
Permissions and credits
Changelogs
Donations
Featuring Imperial Ecology (Vanilla Flavour) - meshes and 1k textures by Discovery1

(drumroll)



Some of you remember our discussions about texture atlases, and how they can improve performance. For these of you who don't follow - texture atlas is one of the means used to reduce the duration of the rendering process by minimising the number of so called "draw calls". If you're interested in what draw calls are and how reducing their number can improve the game's performance, here's the post by the pioneer of texture atlasing for Gamebryo, Pherim:
Spoiler:  
Show

I have wondered quite a bit about why LOD meshes absolutely kill performance in Oblivion, but have much less impact in Skyrim, for example. I believe there are a number of reasons for this. 

First, the engine itself, of course. As you may know, Oblivion can only really use one single CPU core, with minor tasks like loading data being able to be somewhat multithreaded by enabling certain ini settings. Most of the "threaded" settings in the ini don't seem to do anything, really, but Oblivion can definitely make use of a second core, although not much. As LOD meshes increase the CPU load (more on that later), this is one factor that should definitely have an impact. Skyrim is better optimized for multiple cores - my highly modded Oblivion was pushing one CPU core to 100% all the time (in exterior cells at least), while the GPU was not nearly working to its capacity, and as a result the FPS remained pretty low most of the time. With Skyrim, no core is ever at 100%, which allows the GPU to work at maximum capacity, as it is not held back by the CPU. Additionally, they may somehow have improved the handling of LOD meshes in the engine itself. 

Second, I am not sure the polygon count of the individual LOD meshes is really that important. That performance is directly proportional to the total amount of rendered polygons is a myth from the early days of 3D graphics that is still widely believed, but not necessarily true. Instead, what is much more important is the amount of "draw calls". A
draw call is basically an "object" that the CPU tells the GPU to draw. Depending on how many materials/textures a mesh uses, it can generate multiple draw calls, because every material/texture is considered as a single object. So, draw calls have to be processed by the CPU first, before the GPU can render the objects. This means, two objects with few polygons are heavier on performance than one with many polygons, because the former generate two draw calls, whereas the latter only one, which can be handled in one single "batch". The CPU can pass it faster to the GPU, which then can then render the object much faster, even if it has many more polygons than the two objects combined.Now look at how Skyrim's LOD works. All Tree LODs share one single texture, as do all LOD objects. This way, the amount of draw calls is significantly reduced (one 2k texture is much better than 64 256x256 pixel ones), and the GPU can render them much faster because it doesn't have to wait for the CPU to process the individual draw calls. 

This is not a thing that depends on the engine, it is how real-time 3D graphics work in general. The amount of triangles per draw call depends on the GPU, but has significantly increased since the release of Oblivion. On the other hand, CPUs have mainly increased the number of cores, but as we all know, more cores does not necessarily equal better
performance, especially for games. That means individual objects can have many more polygons without really impacting performance, but you cannot have that many more different objects. 

Now, in the case of Oblivion and RAEVWD, we have a greatly increased amount of draw calls from the additional LOD objects, which all have their own textures (and often more than one in a single mesh), and all that in a game that is limited to a single CPU core. I believe this is mainly what's killing performance here. To be sure, though, it would be necessary to make the LOD meshes all use the same texture, but that would require a huge amount of work, especially as it would not be possible to use tiling textures any more, at least not without splitting up the uv map. One could try to assign a placeholder texture to all LOD meshes and see if the performance is significantly improved. If so, it may be worth a shot to make a new version with combined textures. It should even be better if the tree billboard textures could also be combined into one, but I don't know if this is possible because of the different mesh format they are using. 

I have concerned myself with this quite a bit lately and I believe I mostly got it right, but I cannot guarantee that everything I have written is 100% correct. However, the fewer textures, the better, that is for sure, and unfortunately, RAEVWD adds many, many additional textures, of which most have to be drawn at once, depending on how much of the game world you currently see.

The post originally published on Bethsoft Forum

Pherim writes about RAEVWD but the same principles apply to every object rendered in game. Morrowind modders have already embraced this idea with their Project Atlas.

Thanks to gentle prodding from some modders (I'm looking at you CarlosS4444 ;P) I went back to my old projects and started tinkering with them again only to put them aside again after an enlightening conclusion that none of them has such a massive presence in the world of Tamriel as GRASS! Grass grows everywhere - in fields, forests, in the water, clips through roads, clips through rocks and buildings, sometimes it even hovers in the air (although it's usually unintended).

In my game there are 66 different meshes for grass in Tamriel (69 actually, but I've never seen the other 3 - if I find these white, purple, and red heather bushes, I'll add a tiny update). It means there are about 50 different materials, and 50 different textures (some are used more than once) - that makes plenty draw calls at any moment there's grass around you.

So I combined all grass textures from my "plants" folder into 3 large atlases - 4k each. They are large, but each of them is loaded only once in every cell (even if all 3 of them are needed). Previously 50 textures were loaded up to 50 times, jamming the CPU single core that's used by this game. I also modified grass/groundcover meshes so that they use only 3 types of material (for 3 texture atlases) instead of 50. So draw calls for materials are also reduced. On my computer the stability and FPS boost is clearly noticeable.

The best part for me personally - apart from performance boost - is the fact that samtheson kindly let me use his Dad's – Discovery1's assets which haven't been seen on Nexusmods since that very sad day our dear friend passed away. Imperial Ecology (Vanilla Flavour) is in my opinion the best groundcover remake ever created for Oblivion. Every plant shows Discovery1's naturalist passion, and attention to detail. It's also the most comprehensive and coherent groundcover whose colour palette stays close enough to vanilla, yet is very realistic at the same time. Every mesh and every texture in this mod were created by Discovery1. I did only the clerical job of arranging them differently, and adjusting things to this rendering method. Long and tedious work, I admit, but all the credit for the creative part goes to him. With this mod I want to honour his memory.

Discovery1 said this on the original mod page:
(copied from Verdant Anthesis The Imperial Ecology v3 - BAIN by TesaPlus)
Spoiler:  
Show

Anthesis....the period when a plant is in full flower and sexually mature ahem!

The third instalment of The Imperial Ecology. I have totally overhauled the
mod, adding far more detail and increased the density of the flora to
give a more natural and immersive look.

All the flora, (ferns and ivy,s apart) have a grass base. I believe that this is more in keeping
with the real world of wild plant environments, well in my country
anyway. I have worked hard to prevent the 'stitched' look where the
plants look like they are growing in straight lines. I am quite pleased
with the results. My prime intention was to offer a real world like
environment rather than a horticulturists ideal. All the flora depicted
here grows within 5 miles of where I live.

I have included a toned down version of my ivy texture with pseudo shadowing, it is not
perfect but a quite significant improval over the stock vanilla one.
Also included are new natural fern models and ground cover ideas. I have
also added my own somnalius plant texture.

The sizing of the flora is accurate as regards to the fact I measured all plants before I
photographed them. If you want to change the sizes, it can be done by
opening the corresponding nif in nifscope and altering the vertice
dimensions.

As regards file size, these are mid ranged textures, there are a couple of high end textures where I thought it appropriate.
The normal maps are mostly full size. If required I can upload a version
of half size normals if you want to conserve fps.

I hope you get as much pleasure out of this as I have had making the mod. It has for me been a cathartic experience.

This mod is dedicated to all the fellow travellers on the nexus who like to 'wander'.

A special mention for Taepal, who has been requesting 'grass' for a
while. Without his 'subtle' hinting I may not of got off my ass and done
this. I hope this meets your needs friend.

my grass ini...

[Grass]
iMinGrassSize=1
fGrassEndDistance=8000.0000
fGrassStartFadeDistance=7000.0000
bGrassPointLighting=0
bDrawShaderGrass=1
iGrassDensityEvalSize=3
iMaxGrassTypesPerTexure=16
fWaveOffsetRange=1.7500
fGrassWindMagnitudeMax=125.0000
fGrassWindMagnitudeMin=5.0000
fTexturePctThreshold=0.3000

I prefer to use bloom lighting rather than hdr, but a lot depends on personal setup.
I use obge jackobsens ssao, godrays and bleach bypass with crisis dof.
sweet fx dither, film grain and gaussian to get the hazy look.

Compatibility
Daydream will overwrite your other grass textures.
You should be able to use Oblivion Grass Overhaul but meshes with the same name will be ovewritten, and they will point to atlased textures from Daydream. If Oblivion Grass Overhaul uses extra/new meshes (I think it does), those will not get overwritten. The number of draw calls will be reduced but not as dramatically as with just Daydream. The textures from here are merged, but any extra textures not belonging to the atlases still will be loaded separately. The same can be said about many iterations of Lush and Gaudy Floriana Gloria.


Imperial Ecology (Vanilla Flavour) is my personal all-time favourite remake of TES4 groundcover, but if you have other favourites you'd like to turn into atlases, I can show you how to do it. Don't hesitate to comment, or PM me.

EDIT Dec. 2021:
I've added an optional package with atlased textures for those of you who'd rather like slightly warmer and darker grass to match their modified landscape textures. I also decided to replace poppies with regular grass that was sitting on my disc for such a long time thaat I completely forgot where it comes from, but it looks like one of vurt's grasses for Fallout? Please, let me know if you are able to identify it, so that I can properly credit the author.

I'd be grateful for your images. My computer is very old and I have a tough time taking large resolution screenshots. But if you're curious what this grass looks like, all my images posted in recent years have featured Imperial Ecology Vanilla Flavour. :)

I'd like to say thank you to the following people:
discovery1 - for his creative vision, and passion.
Pherim - for explaining texture atlases in a clear manner.
CarlosS4444 - for not letting go.
1Mac - for all the extra information.
samtheson - for his permission to use discovery1's assets. Keep an eye, guys, for his MERP beautification project
TesaPlus - for archiving discovery1's work.