Jump to content

Photo

Draw Distance (uGridsToLoad)


  • Please log in to reply
22 replies to this topic

#1
Freemanhl2

Freemanhl2

    Journeyman

  • Members
  • Pip
  • 46 posts
Some of you may have noticed the middle distance Level Of Detail in Skyrim is somewhat subpar in comparison to the amazing graphics at close range and far away (if you havent then you soon will). The game is obviously very good looking and I think Bethesda did a great job visually, but the engine shows some real inefficiency when it comes to CPU scaling and optimization.

Heres what I have learned so far. The game world seems to be broken up into "grids" (cells, blocks) or sections that are loaded into view as the player moves around, the amount of grids to load is controlled by the variable "uGridsToLoad" located in the skyrim.ini. I am unsure if uGrids refers to a static division of the world itself, or simply an incremental distance from the players central position at which data is streamed into view. The default value appears to be 7 and the game is likely programmed to only accept odd increments (e.g. 7,9,11). 13 is the highest uGridsToLoad value that I have managed to run on my system (6gb RAM, i7 950 3.0ghz, GTX480 1.7gb), others with more RAM could possibly experiment with 15. To prevent stuttering the game buffers grids outside of the viewing area, the size of this buffer is controlled by the value "uExterior Cell Buffer" also located in skyrim.ini. For anyone interested in experimenting with these settings I have created a tutorial here.

Here are some screenshots ive taken with different grid values (FPS @ Top/Left)

uGridsToLoad=7
Posted Image

uGridsToLoad=9
Posted Image

uGridsToLoad=11
Posted Image

uGridsToLoad=13
Posted Image

As you can see the difference is astounding. There are gameplay implications aswell, I find myself discovering more in the game world when I can actually see it from a distance, even in the image above there is a fisherman and his boat visable only at level 9, something I might have overlooked at level 7. Enemies can be seen from greater distances also, allowing you to avoid certain confrontations. But in the end it just looks better =)

There is a downside tho, even with a relatively high end PC any value above 7 is unplayable for me. I have experienced frame rates of 17fps and under with uGrids at only 9.. Including iPreloadSizeLimit=536870912 (I assume this fetches upto 512mb into RAM?) and fMasterFilePreLoadMB=128.0000 in Skyrim.ini did help a lot, but still unplayable.. So I experimented to see if it was a Graphics or CPU bottleneck and amazingly halving the resolution, turning off all anti aliasing, all filtering, and a whole bunch of other stuff did NOTHING to my frame rate! This game eats CPU for breakfast lol I guess extending the amount of grids increases the number of active NPCs..? Altering "fLODFadeOutMultActors" in SkyrimPrefs.ini does nothing because this only controls the amount of actors rendered on screen, I assume AI routines are still beeing processed in the background.

There are ways to decrease the amount of detail while maintaining a higher uGrids value, using the [TerrainManager] settings in skyrimprefs for instance. I can decrease fTreeLoadDistance (distance to render trees), fBlockMaximumDistance (distance to render terrain blocks) and fGrassStartFadeDistance (distance to render grass) untill there's basicaly no grass, trees or any terrain detail in the game what so ever lol it makes Morrowind look practicaly photo realistic by comparison and still no effect on FPS, wich is really strong evidence this game could look a lot better if somehow the Graphics and CPU resources could be scaled independently of each other. Why not just increase the LoadDistance's and LODlevel's for trees, grass, objects, actors etc and leave the uGridsToLoad value at default? Because no matter how high you set these values they will never render beyond the visable grids, outside this area appears to be a completely seperate "skybox" and there is no ability to control visual fidelity or move assets in/out of this region.

I think the only way to make this work is to mod some of the higher fidelity assets into the skybox, textures might be easy enough but most objects dont even exist in that space. Perhaps there are values deeper inside the game that allow greater control over CPU resources, number of active NPCs etc that we can scale back to increase performance? A solution could potentialy be very simple (or impossible) and I think the results are much better then any texture pack could achieve, what do you guys think? I will keep working on this but my programming knowledge is average, so I welcome anyone who wants to help =) I want to create a better draw distance combined with some higher resolution assets and a few tweaks and package it as a MOD.

Edited by Freemanhl2, 25 November 2011 - 12:55 AM.


#2
LuDux

LuDux

    Old hand

  • Members
  • PipPipPip
  • 717 posts
Very interesting. Great sleuthing!

It looks like 9 might be the sweet spot, in terms of obvious visual benefit. I'm going to try this out. Thanks!

#3
deama

deama

    Enthusiast

  • Members
  • PipPip
  • 195 posts
I don't have uGridsToLoad in my skyrim.ini :S
under which section should I add it?


EDIT: Come to think of it, I think that Beth was either too lazy or never thought of optimizing the grid thing above 7, maybe thats why its so... laggy?
Or am I thinking it wrong?

PS: The uGridtoload is supposed to go under the general tab...

Edited by deama, 24 November 2011 - 10:17 PM.


#4
3AMt

3AMt

    Fan

  • Members
  • PipPipPip
  • 385 posts
"The default value appears to be 7"
Sorry to have to correct you, the default value is 5. I'm running the Skyrim with these settings:

uExterior Cell Buffer=64
uGridsToLoad=7
iPreloadSizeLimit=51380224

It's very stable for me, no CTD even after 5 or 6 hours of playing with a huge graphical improvement :)
Unfortunately an higher amount of the value (9,11,13) is not possible, doesn't matter what kind of hardware you have.
I tried it for myself (with other .ini tweaks and other .dlls files) none of this seems to work and the game crshes every time the next grids have to load...

My System:
System: Windows 7 64-bit
Processor: Intel Xeon X5460 @ 3.2GHz (8 CPUs)
Memory: 65536MB RAM (64 GB)
Card name: NVIDIA GeForce GTX 580

#5
Pablo901

Pablo901

    Stranger

  • Members
  • Pip
  • 1 posts
Hey. I'm trying to improve my graphics, cause' i think i have a little of free potential of my pc (Phenom X4 3,0GHz, 2x2GB RAM DDR3, Sapphire Radeon HD5850). But as I'm adding this uGridsToLoad=7 or 10 or anything, it doesn't give any result in game. I'm sure of it, checked it by making screenshots with fraps. What could be the problem? I tried to add it in

skyrim.ini
[Display]
sD3DDevice=""
uGridsToLoad=7
[Grass]
b30GrassVS=1
[Water]
bReflectLODObjects=1
bReflectLODLand=1
bReflectSky=1
....

or somewhere in skyrimprefs.ini

...
bDoDepthOfField=1
iRadialBlurLevel=2
[Display]
uGridsToLoad=7
iBlurDeferredShadowMask=3
fInteriorShadowDistance=3000.0000
fShadowDistance=8000.0000
...

and nothing happens :(
I'd really appreciate some help here :<

#6
Blackwolf359

Blackwolf359

    Stranger

  • Members
  • Pip
  • 1 posts

Hey. I'm trying to improve my graphics, cause' i think i have a little of free potential of my pc (Phenom X4 3,0GHz, 2x2GB RAM DDR3, Sapphire Radeon HD5850). But as I'm adding this uGridsToLoad=7 or 10 or anything, it doesn't give any result in game. I'm sure of it, checked it by making screenshots with fraps. What could be the problem? I tried to add it in

skyrim.ini

[Display]
sD3DDevice=""
uGridsToLoad=7
[Grass]
b30GrassVS=1
[Water]
bReflectLODObjects=1
bReflectLODLand=1
bReflectSky=1
....

or somewhere in skyrimprefs.ini

...
bDoDepthOfField=1
iRadialBlurLevel=2
[Display]
uGridsToLoad=7
iBlurDeferredShadowMask=3
fInteriorShadowDistance=3000.0000
fShadowDistance=8000.0000
...

and nothing happens :(
I'd really appreciate some help here :<


Did you also adjust these to match?

uExterior Cell Buffer=64
iPreloadSizeLimit=51380224

#7
nukeclear

nukeclear

    Journeyman

  • Members
  • Pip
  • 45 posts
for ugridstoload=9 to work you need to change cellbuffer to 100

#8
Rennn

Rennn

    Grossly Incandescent

  • Members
  • PipPipPipPipPip
  • 4,822 posts

Hey. I'm trying to improve my graphics, cause' i think i have a little of free potential of my pc (Phenom X4 3,0GHz, 2x2GB RAM DDR3, Sapphire Radeon HD5850). But as I'm adding this uGridsToLoad=7 or 10 or anything, it doesn't give any result in game. I'm sure of it, checked it by making screenshots with fraps. What could be the problem? I tried to add it in

skyrim.ini

[Display]
sD3DDevice=""
uGridsToLoad=7
[Grass]
b30GrassVS=1
[Water]
bReflectLODObjects=1
bReflectLODLand=1
bReflectSky=1
....

or somewhere in skyrimprefs.ini

...
bDoDepthOfField=1
iRadialBlurLevel=2
[Display]
uGridsToLoad=7
iBlurDeferredShadowMask=3
fInteriorShadowDistance=3000.0000
fShadowDistance=8000.0000
...

and nothing happens :(
I'd really appreciate some help here :<


You have it in the display section. Put it under the General section of the Skyrim.ini

#9
Kalos

Kalos

    Enthusiast

  • Members
  • PipPip
  • 189 posts
There should be a note made in the first post, much more visibly, that any value above uGridstoLoad=7 is unplayable and extremely buggy...

#10
porroone

porroone

    Old hand

  • Members
  • PipPipPip
  • 596 posts

There should be a note made in the first post, much more visibly, that any value above uGridstoLoad=7 is unplayable and extremely buggy...

I have been playing with uGridsToLoad=9 for months, no issues yet, I guess it depends in the memory interface of your graphic card, I have a gtx 470 with 384bits memory interface which I think allows me to play at that level, note that if you have a 560gtx for example, the memory interface is much lower so if the game cant get all the data through fast enough it will probably CTD, I got to this conclusion trying to up the ugrids, for me it became unstable at 13, but still could play for a few hours without CTD with a decent framerate.




Page loaded in: 0.995 seconds