前往你的STEAM游戏库->选择Playerunknow's Battleground->右键点击->游戏性->Steam加载选项
复制这个:
-malloc=system +mat_antialias 0 window -USEALLAVAILABLECORES -sm4
PS:引用自 Kentyrion:把 -sm4删除后实际上我的FPS还提高了
2、配置PUB设置
注意!复制和粘贴后请把配置文件设置为只读。
用文件资源管理器打开用户/appData/Local/TslGame/Saved/Config/WindowsNoEditor
打开GameUserSettings.ini
修改以下选项:
[ScalabilityGroups]
sg.ResolutionQuality=70
sg.ViewDistanceQuality=0
sg.AntiAliasingQuality=0
sg.ShadowQuality=0
sg.PostProcessQuality=0
sg.TextureQuality=0
sg.EffectsQuality=0
sg.FoliageQuality=0
sg.TrueSkyQuality=0
sg.GroundClutterQuality=0
sg.IBLQuality=0
sg.HeightFieldShadowQuality=0
保存并设置为只读
打开Engine.ini并修改以下设置:
[Core.System]
Paths=../../../Engine/Content
Paths=%GAMEDIR%Content
Paths=../../../Engine/Plugins/OceanPlugin/Content
Paths=../../../Engine/Plugins/Mutable/Content
Paths=../../../Engine/Plugins/Runtime/Coherent/CoherentUIGTPlugin/Content
Paths=../../../Engine/Plugins/RoadEditor/Content
Paths=../../../Engine/Plugins/2D/Paper2D/Content
Paths=../../../Engine/Plugins/Wwise/Content
[/script/engine.engine]
bSmoothFrameRate=true
MinDesiredFrameRate=60
SmoothedFrameRateRange=(LowerBound=(Type="ERangeBoundTypes::Inclusive",Value=60),UpperBound=(Type="ERangeBoundTypes::Exclusive",Value=144))
MaxPixelShaderAdditiveComplexityCount=128
MaxES2PixelShaderAdditiveComplexityCount=45
TimeBetweenPurgingPendingKillObjects=30
bDisablePhysXHardwareSupport=True
[/script/engine.renderersettings]
r.SeparateTranslucency=False
r.CustomDepth=1
r.DefaultFeature.Bloom=False
r.DefaultFeature.AmbientOcclusion=False
r.DefaultFeature.AmbientOcclusionStaticFraction=False
r.DefaultFeature.MotionBlur=False
r.DefaultFeature.LensFlare=False
r.DefaultFeature.AntiAliasing=0
r.ViewDistanceScale=1
r.ShadowQuality=0
r.Shadow.CSM.MaxCascades=1
r.Shadow.MaxResolution=256
r.Shadow.RadiusThreshold=0.1
r.Shadow.DistanceScale=0.1
r.Shadow.CSM.TransitionScale=0
r.DistanceFieldShadowing=0
r.DistanceFieldAO=0
r.DepthOfFieldQuality=0
r.RenderTargetPoolMin=300
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.EyeAdaptationQuality=0
r.FastBlurThreshold=0
r.Upscale.Quality=1
r.TonemapperQuality=0
r.RefractionQuality=0
r.SSR.Quality=0
r.SceneColorFormat=3
r.TranslucencyVolumeBlur=0
r.MaterialQualityLevel=0
r.SSS.Scale=0
r.SSS.SampleSet=0
r.EmitterSpawnRateScale=0.75
修改FOV(人物视角广角设置)
注意,这里需要将Engine.ini暂时取消只读,方能进行修改,修改完成后再改回只读。
打开Engine.ini
添加以下内容:
[/script/engine.localplayer]
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV
保存并设置为只读
修复黑暗问题
删除有些选项也许会提高FPS
有一些玩家报告说,
指南依然会导致在建筑物里会非常漆黑
以下是其他几个玩家的话,也许有帮助
移出bloom文件并没有帮助我修复黑暗的问题。
需要删除的 这2行
Engine.ini中的
r.EyeAdaptationQuality=0 (这行删除以后是野外 城内并非房子内的黑暗)
r.DistanceFieldShadowing=0 (这行才是删除室内黑暗 ,然后室内应该就完全明亮了。)
你可以手动建这个文件夹,建好后再里面新建一个快捷方式,目标填"C:\Program Files\Internet Explorer\Connection Wizard\icwconn1.exe" /smartboot new /skipintro起始位置填C:\WINDOWS
名子改成"提供更多的 Internet 服务提供商" 不要带引号。
文件主要分为四个部分:Scanned block section,Non-scanned block section,Opening-time data section和Trailer。
无论是Data Block Index还是Bloom Filter,都采用了分层索引的设计。
Data Block的索引,在HFile V2中做多可支持三层索引:最底层的Data Block Index称之为Leaf Index Block,可直接索引到Data Block;中间层称之为Intermediate Index Block,最上层称之为Root Data Index,Root Data index存放在一个称之为”Load-on-open Section“区域,Region Open时会被加载到内存中。基本的索引逻辑为:由Root Data Index索引到Intermediate Block Index,再由Intermediate Block Index索引到Leaf Index Block,最后由Leaf Index Block查找到对应的Data Block。在实际场景中,Intermediate Block Index基本上不会存在,文末部分会通过详细的计算阐述它基本不存在的原因,因此,索引逻辑被简化为:由Root Data Index直接索引到Leaf Index Block,再由Leaf Index Block查找到的对应的Data Block。
在”Scanned Block Section“区域,Data Block(存放用户数据KeyValue)、存放Data Block索引的Leaf Index Block(存放Data Block的索引)与Bloom Block(Bloom Filter数据)交叉存在。
无论是Data Block的索引数据,还是Bloom Filter数据,都被拆成了多个Block,基于这样的设计,无论是索引数据,还是Bloom Filter,都可以按需读取,避免在Region Open阶段或读取阶段一次读入大量的数据,有效降低时延。
至此,一个完整的HFile已生成。我们可以通过下图再简单回顾一下Root Index Block、Leaf Index Block、Data Block所处的位置以及索引关系:
Bloom Filter包含Bloom元数据(Hash函数类型,Hash函数个数等)与 位图数据(BloomData) ,为了避免每一次读取时加载所有的Bloom Data,HFile V2中 将BloomData部分分成了多个小的Bloom Block 。BloomData数据也被当成一类Inline Block,与Data Block、Leaf Index Block交叉存在,而关于Bloom Filter的元数据与多个Bloom Block的索引信息,被存放在Load-On-Open Section部分。但需要注意的是,在FileInfo部分,保存了关于BloomFilter配置类型信息,共包含三种类型:不启用,基于Row构建BloomFilter,基于Row+Column构建Bloom Filter。混合了BloomFilter Block以后的HFile构成如下图所示:
再来看hbase如何在hdfs上去检索一行数据。首先要只要hbase的检索都是以rowkey值或者rowkey值范围来检索数据的,现在root表中检索mata表的的hregion位置,root表只会有一个region而且永远不会
被拆分以保证能够一次获取到mata表的hregion的位置,在mata表中保存所有的用户表的region的信息,region的rowkey有该region对应的表和第一行的rowkey等组成,因为一个表的rowkey在所有的
region上都是有序的字典排序,所有要检索一个rowkey只要通过对比mata表中region的rowkey就可以知道包含改rowkey的数据在那个region上,meta中还包含了region所咋的hregionserver的信息,通过
mata中的region的信息可以直接定位到包含改rowkey数据的所在的region在哪台hregionserver上。
知道region在哪台hregionserver上对已快速定位rowkey的数据还是不够的,region会根据families把数据才分成store,一个store只能包含一个family,在保存到hdfs的时候store其实就是一个目录而已,真正存数据的是filestroe也就是hfile,每一个hfile当达到一定大小的时候就会拆分成两个hfile所以一个store目录中会包含多个hfile。
因为table是按照rowkey来划分region的,region默认的大小为256M,通常会设置得更高1G,2G,4G等,所以hfile不可能比region的的值要大。但是hfile有可能还是很大,在hdfs上会拆分成不同的block放在不同的datanode上,这样子仍然无法做到精确定位。
hfile 继续划分,有data block,block index,trailler等组成,已经定位到rowkey所在的hfile时,会先读取hfile的trailer的信息以获取block index的位置,block index的key就是data block中的第一个rowkey,所以通过block index 的key就能精确的定位到要检索的rowkey在那个data block上,然后直接将该data block读取到内存,需要注意的是这里的data block已经很小了(默认是64k,不同于hdfs上的block默认为64M,hbase的hfile中的block要小的多)这样子足以读取该block到内存中,将该block进行遍历就能获取到需要的rowkey取出数据,以为这里的block只有64k这样的遍历非常迅速。这就是为什么hfile的data block要设置的如此之小的原因。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)