Jump to content

Skyrim.ini and Skyrimprefs: Rantings of a madman SSE (math)


headfull

Recommended Posts

Prologue: INI a LOD of trouble


What started as an attempt to fix two minor issues, a lod problem with distant ocean squares and a seperate "hole in water" issue has led to a chase down rabbit holes beyond counting. "fSplitDistanceMult=" anything higher than 1.9000 would result in the ocean problem.

[the perfect graphics card/INI settings must be found]

(Thanks various STEP pages) <rant> 2 days tweaking ini's and graphics card settings with splitdist set at 1.5(ultra default), looks good but...fix one thing. <further ranting> few hours spent tweaking fSplitDistanceMult= from 4.5 down to 1.5 and between with bethINI max settings <excessive rant> where do these figures come from, what do they do, what values effect what values, how do I find those perfect setting for me..and other people I suppose.

[coffee]
fGiveBack=0.0025
<deep breath rant> Most of this post may be common knowledge, much of it coincidence, quite a bit sleep derived coffee fueled I wish this cold would go away delirium and maybe just maybe a bit of insight.

<MATH WARNING> <NOT A GUIDE>
Rantings Volume 1: Did you r.t.f.m.?


Default* game ini values and STEP guide gathered game maths...definitely maths.
Covered for...reasons.  

I began just logging my changes in a txt file because I crs; then, later systematically crunching the default* fsplitdistancemult numbers as well as other values and figures.

 Mult, It must be a multiple of something, something multiplied by it, squared, square roots, X divided by...devided BY X.., grasping at straws, hoping to see a pattern I began mathing. A faint one began to form as I recalled the bellow about ugrids and cell buffer. I've focused mainly on these three settings and SplitDist defualts, but feel I may be overlooking a crucial setting, besides specific grass/tree/etc. Sorry if any or all of this is already covered or just plain old synchronicity, It's killed time. PLEASE, share if you have a formula to find SplitDist=X, I'll be searching the forums in the meantime. There could be nothing to any of this, please take your complimentary grain of salt now.
-----------------------

fSplitDistanceMult=X

What, if any settings effect or relate to this? What if any is the formula to find this? If X=X must  Y=???

 

Theory, Split= <something> divided by 2, multiplied by... that's the question. Find default settings/formula that satisfies conditions
Theory, Split dist is is loosely related to one of: cell buffer/Ugrids, RefLODgrid, 64 bit or other.
Theory, find numbers that go into 36 a whole number of time, even fractions.
Same theory, 64. Example: splitdist=1.5607
Similar theory common factor of 64 and 36 whole or fraction or other setting values.
<Any other crackpot theory>

<Values that (can)change from being 64 bit>

--------------------------------------------------
uExterior Cell Buffer=36
uGridsToLoad=5
STEP: Exterior Cell Buffer sets the amount of cells to buffer when outdoors. It should be at least the value of uGridsToLoad plus one squared

sqr(5+1)=36

[6*6=36]

Nothing new here. SSE and changing uGrids, Bad.
-------------------------------------

 

uLargeRefLODGridSize=11 (default)
Now: Find what determines LargeRefLOD if any, how it's values relates to other settings values.

Found this, to be read.

https://forum.step-project.com/topic/11518-dyndolod-skyrim-special-edition/

 

-----------------------------------------------------------------------
Other known equations and potential factors for consideration later

-----------------------------------------------------------------------

fMeshLODLevel1FadeDist sets the primary mesh level of detail fade distance. The maximum distance with uGridsToLoad at 5 is around 16896.

fMeshLODLevel1FadeTreeDistance sets the primary mesh level of detail fade distance for trees. The maximum distance with uGridsToLoad at 5 is around 16896.

MeshLODLevel2FadeDist sets the secondary mesh level of detail fade distance. The maximum distance with uGridsToLoad at 5 is around 16896.

fMeshLODLevel2FadeTreeDistance ...uGridsToLoad at 5 is around 16896.

 

Note: STEP guide also lists Ultra values as 10,000,000 for some of these.

-------------------------------------

Rantings Chapter 2: They slowly backed away

 

(uLargeRefLODGridSize)
Begin madness. Coincidence or correlation, I'm not sure; This stuck out to me. Not sourced from anywhere that I know, maybe LE pages but I haven't seen it.

(uLargeRefLODGridSize)-(uGrids)=(Square root of Cell buffer)
(uLargeRefLODGridSize)11- 5(uGrid)=6 (square root of 36{cell buffer})

or

(11-1)/2=5 (ugrids) or 5+(5+1)=11 or <alt expression here>

This works for default values But what happens when you change LargeRef or "other settings". TBD

-----

STEP:"iGrassCellRadius sets the radial number of cells that grass is rendered around the player. This must be set to (uGridsToLoad - 1)/2. If set higher, grass will bug out quickly and remove all grass upon walking just a short distance. If set lower, grass will pop into view unrealistically. Negative values disable grass.

Default is 2. Recommended is (uGridsToLoad - 1)/2."

{sqr(64)=8}
{sqr(36)=6}
8-6=2 [Grass lod setting that =2]

Could be coincidence, another thing that popped out at me. This is what my brain does.
-----------------------------------------------------------------------------------------------------------------------------

Chapter 3: The Phantom Maths

 

bCountingCards=1
So here we are back at the beginning but yet halfway through. This section is SplitDif values that I broke down to their additives (multiplication is just addition) into columns so that I could look at the previous row and know the next value in the sequence without mathing (patterns). Maybe someone can Rain-man something out of this I cannot. Try different column set-ups maybe.

fSplitDistanceMult=X plus itself
X+x=y, y+x= etc
--------------------------
SplitDif Default values
fSplitDistanceMult=0.4(Low), =0.75 (med/default), =1.1(High), =1.5
(Ultra), =4.0000 (bethINI)
---------------------------
Default

00.75>   01.5>   02.25>    03>
03.75>   04.5>   05.25>    06*>  
06.75>   07.5>   08.25>    09>
09.75>   10.5>   11.25>    12>
12.75>   13.5>   14.25>    15>
15.75>   16.5>   17.25>    18>
18.75>   19.5>   20.25>    21>
21.75>   22.5>   23.25>    24>
24.75>   25.5>   26.25>    27>
27.75>   28.5>   29.25>    30>
30.75>   31.5>   32.25>    33>
33.75>   34.5>   35.25>    36*>
36.75>   37.5>   38.25>    39>
39.75>   40.5>   41.25>    42>
42.75                                45
45.75                                48  
48.75                                51
51.75                                54
54.75                                57
57.75                                60
60.75                                63//
68.75


High

                     
01.1>   02.2>  03.3>  04.4>  05.5>  06.6>  07.7>  08.8>  09.9>   11>  
12.1>   13.2>  14.3>  15.4>  16.5>  17.6>  18.7>  19.8>  20.9>   22>
23.1>   24.2>  25.3>  26.4>  27.5>  28.6>  29.7>  30.8>  31.9>   33>
34.1>   35.2>  36.3>  37.4>  38.5>  39.6>  40.7>  41.8>  42.9>   44>
45.1>   46.2>  47.3>  48.4>  49.5>  50.6>  51.7>  52.8>  53.9>   55>
56.1>   57.2>  58.3>  59.4>  60.5>  61.6>  62.7>  63.8>  64.9>//66>
67.1>   68.2>
78.1>   79.2>


Ultra


01.5>  03>  04.5>  06>
07.5>  09>  10.5>  12>
13.5>  15>  16.5>  18>
19.5>  21>  22.5>  24>
25.5>  27>  28.5>  30>
31.5>  33>  34.5>  36*>
37.5>  39>  40.5>  42>
43.5>  45>  46.5>  48>
49.5>  51>  52.5>  54>
55.5>  57>  58.5>  60>
61.5>  63>  64.5//  66


Beth


04>  08>  12
16>  20>  24>
28>  32>  36***
40>  44>  48>
52>  56>  60
64*>

4*16=64


Low


0.4>  0.8>  1.6>  2.0>   |
2.4>  2.8>  2.6>  3.0>   |
3.4>  3.8>  3.6>  4.0>   |
4.4>  4.8>  4.6>  5.0>   |
5.4>  5.8>  5.6>  6.0>   |
6.4>                              |

160 x's  to 64, too many ways to break down



SECTION CLOSE SPOILER

  Everything in this ENTIRE post needs proven, save from what's been pulled from STEP LE guides and even then some of those may need adjusting for 64 bit. Everything I post(ed) could be wrong. My goal is to approach this as objective as I can be and to forget every thing I know, or everything I think I know. TBC...

Edited by headfull
Link to comment
Share on other sites

More m.a.d.n.e.s.s.
----------------------------------------------
Chapter 4: Bat country, seriously this is mostly gibberish

Stop. Random math of game related figures. Still reading? No provable relation to anything except that the base value comes from either the game itself or INI's in hopes to help pull soma. Posted for continuity. Common factors, square roots, you name it.

Madness. Madness? Madness! (Multiples. Addition. Division. NoWeSubtractToo. Edition. Special. Skyrim.)

64 & 36
The common factors are:
1, 2, 4, 8, 16
The Greatest Common Factor:
GCF = 16
The factors of 16 are:
1, 2, 4, 8, 16
The factors of 64 are:
1, 2, 4, 8, 16, 32, 64
The common factors are:
1, 2, 4, 8, 16
-----------------------------
(LCD), of 36 and 64 is 576.
576/36 = 16
576/64 = 9

-----------------------------

64/2=32
64> 32> 16> 8> 4> 2> 1

36/2=18
36> 18> 9> 4.5> 2.25> 1.125> .5625(nearly low splitdist)

 

---------------------------------------------

Sqrt 64>>>
64
8
2.82842712
1.68179283**
1.29683955
1.13878863
1.0671404
1.03302488
1.01637832
1.0081559

----------------

Sqrt 36>>>

6>

2.449489742783178>

1.565084580073287

-------------------------

64 bit > 8 bytes > .064 > .0625 > .008 > .007813 > ?0.000064? > 0.000061 > 0.000008

-----------------------------------------------------------------------------------------------------

1.5 sqr = 2.25
36/2.25=16

-----------------

{24*1.5=36}
1/(1.50)=0.6666666666666667
0.6666666666666667 * 36=24
{24*1.5=36}
1/(24)=.0416666666666667
{ 24*0.0416666666666667=1 }

{36/.666666=54}

-------------------------

36/1.5=24
24/1.5=16
16/1.5=10.66666666666667
10.66666666666667/1.5=7.111111111111111
7.111111111111111/1.5=4.740740740740741
4.740740740740741/1.5=3.160493827160494
Etc 3.160493827160494
Etc 1.404663923182442

-------------------------------------

5+11=16

36+11+5=52

-------------------------------------

36/5=7.2
7.2

36/11=3.272727272727273

11/5=2.2

5*11/36=1.527777777777778
5*36/11=16.36363636363636
5*11*36=1,980

36/5*11=79.2

 

m.a.d.n.e.s.s

-----------------------

 

Chapter 4.2 New m.a.d.n.e.s.s.'s (Probably the part to read)

 

Formulas to try to prove my split dist theory, on zee fly, You still have your sand? Spilt dist=X, but really any way.

X/2*Y=Z

 

(36/2)Y=X

(5/2)Y=X

2X/Y=5 or 11 or 36 or.....

<any reasonable and logical formula>

More to come and add if possible.

 

 

Interlude:

In subsequent posts I'll try to pull something rational from TL;dr and prove and disprove as much as I can from all of the above. I accidentally posted and quickly edited the OP, hope I included everything I wanted to. Do not stand by. WIP

Link to comment
Share on other sites

How I arrived at a maximum of around 16896 for fMeshLODLevel1FadeDist and similar was through repeatedly changing the value until it had no effect anymore. I don't know if it has a different approximate maximum, be it higher or lower, if you change uGridsToLoad, as I decided it wasn't necessary to investigate since I wanted the value merely for game performance optimization.

Link to comment
Share on other sites

Thank you for the reply DoubleYou. After my previous posts I started focusing on the terrain manager settings, working with STEP guide default values. I should take into account your max number and see if I can disprove my findings with it. Till then keep grain of sand handy

Highlights of current & previous posts:

New

Wait Edit

OP

(uLargeRefLODGridSize)-(uGrids)=(Square root of Cell buffer)
(uLargeRefLODGridSize)11- 5(uGrid)=6 (square root of 36{cell buffer})
or
(11-1)/2=5 (ugrids) or 5+(5+1)=11 or <alt expression here>

 

Unfiltered current study:

 

Subject to new info

 

SAMPLE SETTINGS:
fBlockMaximumDistance=1000000.0000
fBlockLevel1Distance=280000.0000
fBlockLevel0Distance=140000.0000
fSplitDistanceMult=10.0000

Try these settings:
[TerrainManager]
fBlockLevel0Distance=50000
fBlockLevel1Distance=72500
fBlockMaximumDistance=94000
fSplitDistanceMult=1.5
 
-----------------------------------------------------------------------
mine atm
fBlockLevel0Distance=75000.0000
Default is 20480. Low is 15000. Medium is 20480. High is 25000. Ultra is 35000.

fBlockLevel1Distance=125000.0000
Default is 32768. Low is 25000. Medium is 32768. High is 40000. Ultra is 70000
fBlockMaximumDistance=94000.0000
Default is 100000. Low is 75000. Medium is 100000. High is 150000. Ultra is 250000

fSplitDistanceMult=1.9000
Default is 0.75. Low is 0.4. Medium is 0.75. High is 1.1. Ultra is 1.5.

fTreeLoadDistance=75000.0000
Default is 25000. Low is 12500. Medium is 25000. High is 40000. Ultra is 75000
-----------------------------------
Test equations
current
SpiltDist 1.5/2*fBlock 94,000=70,500
1.5/2*75000=56250
1.5/2*125000=93750
11/2*1.5
11/1.5
11*.75
not seeing it
-----------------------------------
sqr(1.5)=2.25
/2=1.125
Hmm strech
{uLargeRefLODGridSize=11}
------------
Half
{125,000 Cuurent Level1dist/1.125=111111.1111111111}
{111111.1111111111/10,000=11.11111}
{But what is 10k and why did I multiply LargeRefLODGrid by it}
{125,000/2.25=55555.55555555556 /2=111,111.1111111111}



Whole
{250,000 Blockmax Ultra/2.25=111,111.1111111111} hmmm
{Sqr(1.5)*111111.1111111111=250,000
{Or Square root of splitdist times uLargeRefLODGridSize=fBlockMaximumDistance}

Maybe worth looking into further. How does this relate, possibly hint at what to set Blockmax or other terrain settings at if splitdist=X

Test of above
{{sqr(1.9)=3.61*111111.1111111111=401111.1111111111}}
{{{401111.1111111111/2=200555.5555555556 New Fblocklvl1, something?? THEORY ATTEMPT OWN RISK}}}

{{{Default 0.75: srq(.75)=0.5625*111111.1111111111=62499.99999999999}}}
{{{62499.99999999999/2=31,250 (nearly fblocklevel1) }}}***

{{{sqr(1.5)=2.25*111111.1111111111=250,000}}} fBlockMaximumDistance ultra
{{{250,000/2=125,000}}} My current fBlockLevel1Distance***

Ultra(((250000/11.11111--------------------------------------------------------------
-Square root of splitdist times uLargeRefLODGridSize =fBlockMaximumDistance

-Square root of splitdist divide by two =fBlockLevel1Distance
(works***)

-uLargeRefLODGridSize=11 is actually 11.11111

OP

(uLargeRefLODGridSize)-(uGrids)=(Square root of Cell buffer)
(uLargeRefLODGridSize)11- 5(uGrid)=6 (square root of 36{cell buffer})
or
(11-1)/2=5 (ugrids) or 5+(5+1)=11 or <alt expression here>
------------------------------------------------
Poop
{94000 Current Fblockmax/2.25=41777.77777777778}
{94,000/1.5=62666.66666666667}
{94,000/2=47,000}

Defualt
.75/2*20480=7680
.75/2*32768=12288
.75/2*100000=37500

 

Edited by headfull
Link to comment
Share on other sites

Edit: I make a few presumptions that I didn't express properly

 

 

sqr(1.5)=2.25

1.5 squared in case I'm writing that wrong was writing square root on a few of them...

/2=1.125

{(1.5*1.5) / 2 =1.125}  (Mult, split dif)

---------------------------------------------

uLargeRefLODGridSize=11.11111

???? 11.11111 ????

 

Current Level1dist (Ultra set by bethINI?) 125,000/1.125 (see above) = 111111.1111111111

Ok..that lead to

250,000 Blockmax Ultra/2.25=111,111.1111111111 (just going to call this uncompressed till rhyme or reason found)

 

TO

(Splitdist SQUARED) times 111111.1111111111 {uLargeRefLODGridSize=11.11111} = fBlockMaximumDistance

EX:

sqr(1.5)=2.25*111111.1111111111=250,000

Raw data for further examples

---------------------------------------------------------

Attempt to REwrite previous highlights

(Splitdist squared) times uLargeRefLODGridSize UNCOMPRESSED=fBlockMaximumDistance

 

{sqr(1.5)=2.25*111111.1111111111=250,000}

 

---------

fBlockMaximumDistance/2=fblocklevel1

or

(Square of splitdist) times (uLargeRefLODGridSize uncompressed)  =fBlockMaximumDistance/2  =fBlockLevel1Distance

 

----------------------

uLargeRefLODGridSize=11.11111

"uncompressed"=111111.1111111111

 

 

Raw data has improper expressions as well.

 

 

 

Link to comment
Share on other sites

uLargeRefLODGridSize is an unsigned integer, which means it is merely 11, and cannot be 11.11111111111111111...

 

The fBlockLevel0Distance et. al. settings are not necessarily related to fSplitDistanceMult. But they might be. A way to test would be to set the values at zero and test the in-game effects. For example, put fSplitDistanceMult at 4 and all the fBlock distance settings at zero and see if the water anomalies are still present at Winterhold. If so, that would be an indicator that fSplitDistanceMult is not being multiplied by the fBlock distance values, as otherwise the result would be 0 and not 4.

Link to comment
Share on other sites

It's rounded down for actual game use I suppose, I don't know. But for my purpose of trying to find formuli it seems to work. Or it's just a weeeee bit o' insanity.

 

{sqr(1.5)=2.25*111111.1111111111=250,000}

fBlockMaximumDistance=250,000 Ultra

 

Thanks for the tips, I suppose I really could save time and effort with some in game testing of connectivity of settings.

 
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines, Privacy Policy, and Terms of Use.