游戏精英
- 贡献度
- 1137
- 金元
- 28666
- 积分
- 7435
- 精华
- 2
- 注册时间
- 2009-5-14
|
[em54] 不少教程一点都不详细。。。
为了不辜负放开那位奶奶 的建议。。。今天特地花了整整一下午研究这玩意。。。恩,还算可以吧。。。
因为TLF论坛关闭了注册。。。所以据说很详细的wa兄的分析我看不到。。。只能自己研究[em07]
考虑到还有其他上不了TLF的同学,我就分享下自己的研究心得。。。
出于DIY的乐趣,基本上没有用到游戏内部的界面,全部修改sl.ini完成。下面标记[略]的是其他很容易搜索到的教材有解释的,我就不多费口舌了。
OK,Let's shake it
首先,作者自己说了很多,但是关键部分还是没怎么讲清楚。。。
简单而言,SL利用你设定的FPS(Frame per Second)范围确定了一个基准数值vLOD(overall Level of Detail),下面所有动态优化均是以vLOD为参照的。(其实直接用FPS是一样的效果。。。大概是程序脚本用固定范围的变量比较强健)
废话少说,直接分析ini文件(这是我的sl.ini,和大家的default可能部分数值不一样)
;===================================================================================
; [Main Features Settings] Toggle Streamline Features (1=on, 0=off)
;===================================================================================
set SLv.Purging to 1 ; Turn on Streampurge? (cache purging)
set SLv.FPSsmoothing to 1 ; Turn on Streamsmooth? (FPS smoothing)
set SLv.Streamsaving to 0 ; Turn on Streamsaving? (timed autosaves)
set SLv.Streamsight to 1 ; Turn on Streamsight? (FPS enhancer)
为了能单独拿来看。。。我还是提一下吧。。。
[略]这4个分别是清除缓存,优化FPS,自动保存,高级FPS优化的开关
;===================================================================================
; [Streampurge Settings] An automated cache-cleaner for Oblivion
;===================================================================================
set SLh.SLmode to 4 ; Memory Purge Mode (1-6) (Default: 3)
; Lower # = faster, higher # = slower
set SLv.PurgeOnTravel to 0 ; Purge memory on travel & zone?
set SLv.PurgeOnWait to 1 ; Purge memory when character waits?
set SLv.PurgeOnSleep to 1 ; Purge memory when character sleeps?
[略]清理速度推荐4。过高会不稳定
;===================================================================================
; [Streamsmooth FPS Settings] Acceptable Minimum FPS & Detail Settings
;===================================================================================
set SLfpsmon.High to 20 ; Highest minimum FPS (top of range)
set SLfpsmon.Low to 10 ; Lowest minimum FPS (bottom of range)
;-----------------------------------------------------------------------------------
set SLv.maxVLOD to 100 ; Highest overall level of detail (%)
; Default: 100 (Max: 100)
set SLv.minVLOD to 0 ; Lowest overall level of detail (%)
; Default: 0 (Min: 0)
这里是关键。vLOD的计算公式为100*[(实际fps-最低fps)/(最高fps-最低fps)],所以,推荐上面的maxvlod和minvlod不要修改,不然下面的计算会很麻烦。
最高最低fps(下面简称Exfps)的设定也是有讲究的,根据你的不同需求来定。关于最高最低fps的设定技巧我会在详细设定部分说明。我的优化目的是平时低fps无所谓,视觉效果要保证;战斗时完全不考虑视觉,只追求fps,因此设定值很低。
;-----------------------------------------------------------------------------------
set SLv.CombatFPS to 15.0 ; The number of FPS added to the min/max
; range when combat is happening nearby
战斗时Exfps上下限的附加值。同上,这个附加值的设定也是有技巧的。后面提及。
;-----------------------------------------------------------------------------------
set SLv.FPSmoninterval to 6 ; Update interval for FPS smoothing
; (Number of updates per second)
; Faster updates = smoother performance
; Smoother performance = more CPU usage
; Default: 6/sec
set SLv.sensitivity to 7.0 ; Sensitivity to changes (Default: 7.0)
; This is a relative number representing
; how fast Streamsmooth tries to adjust
; details to reach your FPS range.
; Lower numbers = faster changes
[略]保留默认就够用了。
;===================================================================================
; [Streamsmooth Visual Categories] What can Streamsmooth change on-the-fly?
;===================================================================================
set SLv.setDetail to 1 ; LOD Detail, Specular, etc.
set SLv.setGrass to 1 ; Grass density, range, etc
set SLv.setTrees to 1 ; Tree detail, range, etc
set SLv.setLightShadow to 0 ; Shadow number & range, etc.
set SLv.setObjects to 1 ; Actors, Objects & Items distances
set SLv.setWater to 1 ; Water details & reflections
[略]优化类别开关。完全等效下面的开关,只是方便批量开关而已
;===================================================================================
; [Streamsave Settings] Streamsave configuration
;===================================================================================
[略]懒得用自动保存,设置也不难,不提
;===================================================================================
; [Streamsight Settings] Refer to documentation for values
;===================================================================================
set SLv.MinDistanceFog to 15000 ; Min distance before fog starts (0%)
set SLv.MaxDistanceFog to 68000 ; Max distance before fog ends (100%)
set SLv.MinWaterFog to 0 ; Min distance before water fog starts
set SLv.MaxWaterFog to 2500 ; Max distance before water fog ends
;-----------------------------------------------------------------------------------
set SLv.WeatherUnsticker to 1 ; Leave set at 1 unless you use a
; scripted weather mod
;-----------------------------------------------------------------------------------
set SLv.ExtremeClipping to 1 ; Turn on clipping behind distant fog?
; Gains FPS, but can cause some
; clipping of distant mountains
set SLv.ClipMin to 20000 ; Range under which clipping will stop
set SLv.FogUpdateFrequency to 6 ; Speed control for fog updates (1 - 10)
; # of updates per sec (Default: 6)
[略]这个高级FPS优化决定了远景雾化的距离以及切片效果的开关。自己试验。其实直接更改uGridDistantCount效果差不多。
;===================================================================================
; [Miscellaneous Settings] Other misc settings for Streamline
;===================================================================================
[略]其他设置,不难,自己看吧
;===================================================================================
; [Hotkey Configuration] Hotkey combination settings for Streamline
;===================================================================================
[略]热键设定
;===================================================================================
; [Detailed Streamsmooth Settings] Individual Settings (for ADVANCED users)
;===================================================================================
set SLv.AA0 to 0.0 ; Enable?
set SLv.AA1 to 100.0 ; highVLOD - fSpecualrStartMax
set SLv.AA2 to 0.0 ; lowVLOD "The maximum range of Specular
set SLv.AA3 to 500.0 ; maxVAL lighting effects. Ties in
set SLv.AA4 to 100.0 ; minVAL directly to fSpecularLOD"
好了,终于到关键的详细设定了。每个选项的作用很多优化教程都有提及,不再赘述,我重点讲解如何设定来达到自己想要的效果。以此设定为例。
AA0是开启否,如果你特别优化过这个选项,不希望被动态调节,就设为0,下面的数值可以无视。
AA1~2是动态调节的触发范围,触发源就是vLOD。最高值和最低值代表动态调节的全功能作用范围。
AA3~4就是该oblivion.ini选项的数值,对应vLOD的高低。
这玩意究竟是怎么起作用的?我距离说明。将上述改为这样:(假设Exfps=10~20,战斗附加值=15)
set SLv.AA0 to 1.0 ; Enable?
set SLv.AA1 to 74.0 ; highVLOD - fSpecualrStartMax
set SLv.AA2 to 20.0 ; lowVLOD "The maximum range of Specular
set SLv.AA3 to 500.0 ; maxVAL lighting effects. Ties in
set SLv.AA4 to 100.0 ; minVAL directly to fSpecularLOD"
这些设置的意思是:
***没有战斗的时候,当vLOD大于等于74的时候fSpecualrStartMax=500;小于等于20的时候=100。20~74的时候线性渐变。比如vLOD=47,74和20的一半时,fSpecualrStartMax=300,500和100的一半。其中,vLOD20对应的fps是0.20*(20-10)+10=12;vLOD74对应的fps是17.4。用fps来衡量的话,现在的调节规则是:fSpecualrStartMax在fps小于等于12的时候为100,大于等于17.4的时候是500,两者中间的时候线性渐变。
***处于战斗中时,vLOD的计算发生了变化,现在对应的起始截止阈值fps从12~17.4变为27~32.4(上下限直接加15),调节规则变为:fSpecualrStartMax在fps小于等于27的时候为100,大于等于32.4的时候是500,两者中间线性渐变。
你可能会奇怪,莫非我的老本战斗时候fps还会高点不成?让我们来假设一下,我正常野外fps有17~25左右,战斗时跌到13以下。那么会发生什么情况呢?因为非战斗时fps最低都有17,所以高于Exfps上限,视觉效果全部是最大值。而战斗的时候最高fps都远远小于Exfps+15的截止fps,于是跳过线性工作区,直接所以选项掉到最小值。
最终的效果就是非战斗时能以略低的fps看看好的画面,而战斗时所有效果达到最低,腾出资源留给战斗。这玩意就好像二极管一样。。。我利用的是它的非线性工作区,利用的是二极管的开关效应。哦,不对,是Streamline的开关效应。
这种设置没有利用动态调节的线性工作区,是专为战斗优化的。同时,如果将Exfps设定到你野外的通常fps范围内,而战斗附加值很小(比如5),作用就是平滑平时的fps,战斗时略微优化,同时保留可观的视觉效果。不同的优化选项可以设置不同的动态调节范围,比如最求画质的同学,可以将水面效果的high/low vLOD设置为70~90,草地阴影设置为60~70,物件淡出设置为50~60,这样,当fps吃紧的时候,会按照水面效果,草地阴影,物件淡出的顺序依次降低细节等级,提高fps。也就是说,可以将不怎么在意的项目设置苛刻一点,比较在意的项目设置宽松一点,这样当fps略低,动态调节会先拿次要的项目开刀,fps实在吃紧后,再降低其他效果。
由上面的例子可以看出,不同数值的搭配,SL能起到的作用远远不止fps优化这么简单,只要自己花点功夫仔细设置,能够起到非常好的调节效果。
PS:vLOD调节实际上就是根据fps来调节,只是出于某种原因使用了vLOD这个中间变量而已,所以不必被vLOD这个名词绕得头昏,它基本上和fps的高低是等价概念。
;-----------------------------------------------------------------------------------
set SLv.AC0 to 0.0 ; Enable?
set SLv.AC1 to 100.0 ; highVLOD - fSpecularLOD2
set SLv.AC2 to 0.0 ; lowVLOD "Max range at which Level of
set SLv.AC3 to 500.0 ; maxVAL detail (LOD) used for
set SLv.AC4 to 100.0 ; minVAL specular lighting effects"
;------------------------------------------
set SLv.AD0 to 0.0 ; Enable?
set SLv.AD1 to 100.0 ; highVLOD - fSpecularLOD1
set SLv.AD2 to 0.0 ; lowVLOD "Min range at which Level of
set SLv.AD3 to 300.0 ; maxVAL detail (LOD) used for
set SLv.AD4 to 0.0 ; minVAL specular lighting effects"
;-----------------------------------------------------------------------------------
set SLv.AE0 to 1.0 ; Enable?
set SLv.AE1 to 30.0 ; highVLOD - iMinGrassSize
set SLv.AE2 to 0.0 ; lowVLOD "Grass density (inverse #)
set SLv.AE3 to 80.0 ; maxVAL Larger numbers mean less
set SLv.AE4 to 200.0 ; minVAL grass & higher framerates"
;-----------------------------------------------------------------------------------
set SLv.AF0 to 1.0 ; Enable?
set SLv.AF1 to 30.0 ; highVLOD - fGrassEndDistance
set SLv.AF2 to 0.0 ; lowVLOD "Max distance at which to
set SLv.AF3 to 8000.0 ; maxVAL display grass"
set SLv.AF4 to 3000.0 ; minVAL
;------------------------------------------
set SLv.AG0 to 1.0 ; Enable?
set SLv.AG1 to 30.0 ; highVLOD - fGrassStartFadeDistance
set SLv.AG2 to 0.0 ; lowVLOD "Distance from player at which
set SLv.AG3 to 7000.0 ; maxVAL grass begins to fade out"
set SLv.AG4 to 2000.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.AH0 to 0.0 ; Enable?
set SLv.AH1 to 75.0 ; highVLOD - iMaxGrassTypesPerTexure
set SLv.AH2 to 30.0 ; lowVLOD "Number of possible textures
set SLv.AH3 to 4.0 ; maxVAL used per grass type"
set SLv.AH4 to 1.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.AJ0 to 0.0 ; Enable?
set SLv.AJ1 to 100.0 ; highVLOD - iActorShadowCountInt
set SLv.AJ2 to 20.0 ; lowVLOD "Number of actor shadows
set SLv.AJ3 to 10.0 ; maxVAL displayed when indoors"
set SLv.AJ4 to 0.0 ; minVAL
;------------------------------------------
set SLv.AK0 to 0.0 ; Enable?
set SLv.AK1 to 100.0 ; highVLOD - iActorShadowCountExt
set SLv.AK2 to 25.0 ; lowVLOD "Number of actor shadows
set SLv.AK3 to 10.0 ; maxVAL displayed when outdoors"
set SLv.AK4 to 0.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.AL0 to 0.0 ; Enable?
set SLv.AL1 to 100.0 ; highVLOD - fShadowLOD2
set SLv.AL2 to 25.0 ; lowVLOD "Max range at which shadows
set SLv.AL3 to 2900.0 ; maxVAL are displayed"
set SLv.AL4 to 400.0 ; minVAL
;------------------------------------------
set SLv.AM0 to 0.0 ; Enable?
set SLv.AM1 to 100.0 ; highVLOD - fShadowLOD1
set SLv.AM2 to 25.0 ; lowVLOD "Range at which a lower level
set SLv.AM3 to 2800.0 ; maxVAL of detail (LOD) starts being
set SLv.AM4 to 200.0 ; minVAL used for shadows"
;-----------------------------------------------------------------------------------
set SLv.AP0 to 0.0 ; Enable?
set SLv.AP1 to 100.0 ; highVLOD - iShadowFilter
set SLv.AP2 to 20.0 ; lowVLOD "Low/Medium/High shadow
set SLv.AP3 to 2.0 ; maxVAL detail. Alters softness on
set SLv.AP4 to 0.0 ; minVAL edges of shadows"
;-----------------------------------------------------------------------------------
set SLv.AS0 to 1.0 ; Enable?
set SLv.AS1 to 31.0 ; highVLOD - fLODFadeOutMultActors
set SLv.AS2 to 0.0 ; lowVLOD "Relative range at which
set SLv.AS3 to 10.5 ; maxVAL actors begin to fade out"
set SLv.AS4 to 6.5 ; minVAL
;------------------------------------------
set SLv.AT0 to 1.0 ; Enable?
set SLv.AT1 to 30.0 ; highVLOD - fLODFadeOutMultItems
set SLv.AT2 to 0.0 ; lowVLOD "Relative range at which
set SLv.AT3 to 6.5 ; maxVAL items begin to fade out"
set SLv.AT4 to 1.5 ; minVAL
可以看出,物件fade上下限差别非常大,因为我是利用开关效应,战斗的时候远处的石头对我而言完全没有意义。其他同学设置的时候,没有必要这么夸张,可以设置为10~14之类的,这样在fps降低时,可视距离只会有不太明显的变化,但是能gain一点fps,同时High/low vLOD也可以设置宽松一点,比如0~100。
;------------------------------------------
set SLv.AU0 to 1.0 ; Enable?
set SLv.AU1 to 30.0 ; highVLOD - fLODFadeOutMultObjects
set SLv.AU2 to 0.0 ; lowVLOD "Relative range at which
set SLv.AU3 to 6.5 ; maxVAL objects begin to fade out"
set SLv.AU4 to 1.5 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.AY0 to 1.0 ; Enable?
set SLv.AY1 to 30.0 ; highVLOD - fTalkingDistance
set SLv.AY2 to 0.0 ; lowVLOD
set SLv.AY3 to 2000.0 ; maxVAL
set SLv.AY4 to 500.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.AZ0 to 1.0 ; Enable?
set SLv.AZ1 to 30.0 ; highVLOD - fLodDistance
set SLv.AZ2 to 0.0 ; lowVLOD
set SLv.AZ3 to 1000.0 ; maxVAL
set SLv.AZ4 to 400.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.BA0 to 1.0 ; Enable?
set SLv.BA1 to 30.0 ; highVLOD - fFadeDistance
set SLv.BA2 to 0.0 ; lowVLOD
set SLv.BA3 to 1000.0 ; maxVAL
set SLv.BA4 to 400.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.BE0 to 0.0 ; Enable?
set SLv.BE1 to 66.0 ; highVLOD - bEquippedTorchesCastShadows
set SLv.BE2 to 65.0 ; lowVLOD
set SLv.BE3 to 1.0 ; maxVAL
set SLv.BE4 to 0.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.BK0 to 1.0 ; Enable?
set SLv.BK1 to 30.0 ; highVLOD - fTreeLODExponent
set SLv.BK2 to 0.0 ; lowVLOD
set SLv.BK3 to 1.0 ; maxVAL
set SLv.BK4 to 0.2 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.BL0 to 1.0 ; Enable?
set SLv.BL1 to 50.0 ; highVLOD - bUseWaterReflectionsMisc
set SLv.BL2 to 49.0 ; lowVLOD "Turns on water reflections
set SLv.BL3 to 1.0 ; maxVAL for Misc objects (rocks etc)"
set SLv.BL4 to 0.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.BM0 to 1.0 ; Enable?
set SLv.BM1 to 50.0 ; highVLOD - bUseWaterReflectionsStatics
set SLv.BM2 to 49.0 ; lowVLOD "Turns on water reflections
set SLv.BM3 to 1.0 ; maxVAL for Static objects (buildings
set SLv.BM4 to 0.0 ; minVAL etc)"
;-----------------------------------------------------------------------------------
set SLv.BN0 to 1.0 ; Enable?
set SLv.BN1 to 50.0 ; highVLOD - bUseWaterReflectionsTrees
set SLv.BN2 to 49.0 ; lowVLOD "Turns on water reflections
set SLv.BN3 to 1.0 ; maxVAL for Trees"
set SLv.BN4 to 0.0 ; minVAL
;-----------------------------------------------------------------------------------
set SLv.BO0 to 1.0 ; Enable?
set SLv.BO1 to 50.0 ; highVLOD - bUseWaterReflectionsActors
set SLv.BO2 to 49.0 ; lowVLOD "Turns on water reflections
set SLv.BO3 to 1.0 ; maxVAL for actors (NPCs, monsters)"
set SLv.BO4 to 0.0 ; minVAL
;-----------------------------------------------------------------------------------
还有一点非常值得注意。这类0,1的布尔值变量,vLOD的上下限最好如同默认值一样只差1。因为我说过,在上下限之间值是线性渐变的,而作者自己说过,vLOD是离散变量,一共101个取值,50和49之间没有取值,从而能保证选项的值要么是1,要么是0。如果不是这样,就可能出现小数。虽然布尔值凡是非0都认做1,但是为了避免出现什么稀奇古怪的现象,最好还是不要让它有渐变的机会。
OK,全部分析完了,码字累死了。。。[em10]
话说这玩意挺好用的,不光是针对低端机,高端机也有用武之地。比如设定一个非常高的Exfps,最低值设置为通常值,而最高值(正常游戏不可能达到的fps)设置为高端画面的设置,平常的话不会有任何变化,等到拍照的时候ctrl+】,强行设置为华丽的最高画面(伴随可能的低fps),咔嚓,然后恢复,继续游戏。。。
警告:streamline的默认设置是按照中高端机设置的,神卡级用户如果使用后发现更卡,请自行修改参数。 |
评分
-
1
查看全部评分
-
|