Would these posts help?
https://forums.nexusmods.com/index.php? ... ry71563733
https://forums.nexusmods.com/index.php? ... ry73572273
PGRR subrecords are the links between nodes in the same cell/pathgrid. So maybe you meant PGRI or PGRL? As far as I know, the PGRI (links between cells) are only used to join the border between two contiguous, physically connected exterior cells. The x,y,z position always points to a node of the adjacent exterior cell's pathgrid. I can't find any instance of them being used to link to an interior cell or a non-adjacent exterior cell. So, I think your youtube video and your github sourcecode are implementing the inter-cell pathgrid links perfectly.cc9cii wrote: ↑10 May 2020, 22:03 What I'm lacking is some of the details - e.g. how are the PGRR sub-records meant to be used? how does the game know a particular interior cell is connected to a pathgrid point outside?
I put up a short video to illustrate. You can see that the entry points to other cells do *not* have a blue pathgrid point nor any inter-cell links (orange lines). My guess is that the vanilla engine is using either the doors or teleport markers (FO3/FONV appears to have explicit portal markers which I suspect are used to link cells).
Hi, I meant PGRR subrecords in ROAD records. They don't look the same to me. With regards to pathgrid implementation I believe OpenMW had it done many years ago so I don't think there'll be too many surprises.ponyrider0 wrote: ↑11 May 2020, 00:12 PGRR subrecords are the links between nodes in the same cell/pathgrid.
Yes, using the pre-generated ones. I believe the CS can generate them, although I've never tried. I think I posted the naming convention in one of the earlier posts.ponyrider0 wrote: ↑03 Jun 2020, 19:32 @cc9cii - Amazing work with your latest youtube videos.
Regarding the Landscape LOD performance, https://www.youtube.com/watch?v=gdcRzohlOaI&t, I have a few questions:
1. Are you using the pre-generated landscape meshes/textures (\Oblivion\Data\Meshes\Landscape\LOD\*.nif and \Oblivion\Data\Textures\LandscapeLOD\Generated\*.dds) or generating your own?
I was using the ".lod" files (which contain object references but without object id, so they're like spawned objects). If the object has a low-poly version (i.e. _far.nif) that is used, and no collision shapes are created. If I remember correctly the low-poly mesh also specify low-poly textures. (just checked, they do - e.g. CastleCheydinhalKeep01_far.NIF uses Architecture\\Castle\\Cheydinhal\\CheydinhalCastleLOD01.dds)2. Similarly, are you using the pre-generated Distant Object LOD files (\Oblivion\Data\DistantLOD\*.lod) or generating your own Distant Object render list / scene graph? If generating your own, are you doing it real-time or pre-computing? Pre-computing a Distant Object render list per cell would allow you to limit the Distant Objects to a certain number of instances to improve performance. Then you could prioritize the size of the Distant Object vs distance from the cell (aka screen size of distant object from that cell) to determine which object to keep or cull.
Code: Select all
Game | BSA | Folder | filename
---------|-------------------|-------------|--------------
Oblivion | Oblivion - Meshes | distantlod | .cmp
FO3/FONV | Fallout - Misc | lodsettings | .dlodsettings
Skyrim | Skyrim - Meshes | lodsettings | .lod
Not doing any of that at the moment - probably something to do as performance optimisation once I get things to work properly. Actually I'm not even loading the normal maps for the landscape LOD currently (which might be the reason for them being too dark?)3. Are you using separate graphics pipelines to render the Distant Lands and Distant Objects? You could probably cut out a number of graphics operations when rendering Distant Lands/Objects, ex: specular lighting, positional lighting, etc.
Thanks for that I'll look into it.As you already mentioned in your youtube post, the Oblivion engine renders only a small number of distant objects; and even mods like Oblivion's RAEVWD only add 100-200 additional distant object instances into the entire worldspace. Most of the illusion of a fully populated LOD world is done via billboards of trees. Which brings me to my last idea: a good placeholder for a fully rendered speedtree is to use the speedtree billboards, these are just regular DDS files that use the scaling and coordinate information from the game records rather than any proprietary speedtree fileformat data. Here is a post with Oblivion engine being used to display non-Speedtree distant objects as billboards: https://www.patreon.com/posts/developer-2020-34313646.