Настройка конфигурационных файлов уровней графики в CRYENGINE 5.3. Оптимизация CRYENGINE 5.
Те, кто плотно работал с движком, наверняка заметили, что стандартные значения для параметров уровней графики не оптимальны. В этой статье мы разберёмся с устройством и настройкой конфигурационных файлов, отвечающих за уровни графики в движке, и создадим свои наборы параметров с желаемыми значениями.
Знакомство со стандартными конфигурационными файлами.
По умолчанию в движке есть 4 уровня графики:
- Low
- Medium
- High
- Very High
Каждый уровень графики имеет набор параметров с определёнными значениями, которые влияют на качество отображения в движке (в том числе дальность отрисовки). Отсюда следует закономерный вопрос, где это всё настраивается?
Уровни графики являют собой конфигурационные файлы, представленные обычными текстовыми файлами с расширением .cfg. Располагаются они в <Root CRYENGINE>\engine\engine.pak\Config\.
Примечание: pak это обычный zip-архив, который можно открыть архиватором 7z.
В этом pak-архиве мы обнаружим множество конфигурационных файлов. Необходимые в нашем случае называются следующим образом:
- Low = lowspec.cfg
- Medium = medspec.cfg
- High = highspec.cfg
- Very High = veryhighspec.cfg
Внутри этих файлов мы обнаружим следующее:
- lowspec.cfg — sys_spec_Full = 1
- medspec.cfg — sys_spec_Full = 2
- highspec.cfg — sys_spec_Full = 3
- veryhighspec.cfg — sys_spec_Full = 4
Как-то маловато параметров для глобального конфига, не так ли? Оказывается, это всего лишь промежуточные конфигурационные файлы, которые активируют другие конфигурационные файлы, содержащие необходимые параметры. Это сделано потому, что параметров довольно много и если их записать в один файл, то будет сложновато ориентироваться. К сожалению, я не разделяю такой «заботы» и далее по статье будем закидывать всё в один глобальный конфигурационный файл. Потому что можем.
Необходимые конфигурационные файлы находятся в каталоге <Root CRYENGINE>\engine\engine.pak\Config\CVarGroups\. В нём обнаружим следующее:
sys_spec_Full.cfg — это очередной промежуточный конфигурационный файл, в котором заданы значения для конфигурационных файлов дальше по списку. Содержимое:
[default]
; default of this CVarGroup
= 3
sys_spec_ObjectDetail=3
sys_spec_Shading=3
sys_spec_VolumetricEffects=3
sys_spec_Shadows=3
sys_spec_Texture=3
sys_spec_Physics=3
sys_spec_PostProcessing=3
sys_spec_Particles=3
sys_spec_Sound=3
sys_spec_Water=3
sys_spec_GameEffects=3
sys_spec_light=3
[1]
sys_spec_ObjectDetail=1
sys_spec_Shading=1
sys_spec_VolumetricEffects=1
sys_spec_Shadows=1
sys_spec_Texture=1
sys_spec_Physics=1
sys_spec_PostProcessing=1
sys_spec_Particles=1
sys_spec_Sound=1
sys_spec_Water=1
sys_spec_GameEffects=1
sys_spec_light=1
[2]
sys_spec_ObjectDetail=2
sys_spec_Shading=2
sys_spec_VolumetricEffects=2
sys_spec_Shadows=2
sys_spec_Texture=2
sys_spec_Physics=2
sys_spec_PostProcessing=2
sys_spec_Particles=2
sys_spec_Sound=2
sys_spec_Water=2
sys_spec_GameEffects=2
sys_spec_light=2
[3]
sys_spec_ObjectDetail=3
sys_spec_Shading=3
sys_spec_VolumetricEffects=3
sys_spec_Shadows=3
sys_spec_Texture=3
sys_spec_Physics=3
sys_spec_PostProcessing=3
sys_spec_Particles=3
sys_spec_Sound=3
sys_spec_Water=3
sys_spec_GameEffects=3
sys_spec_light=3
[4]
sys_spec_ObjectDetail=4
sys_spec_Shading=4
sys_spec_VolumetricEffects=4
sys_spec_Shadows=4
sys_spec_Texture=4
sys_spec_Physics=4
sys_spec_PostProcessing=4
sys_spec_Particles=4
sys_spec_Sound=4
sys_spec_Water=4
sys_spec_GameEffects=4
sys_spec_light=4
В квадратных скобках указаны значения, соответствующие значениям для параметра sys_spec_Full из конфигурационных файлов lowspec.cfg, medspec.cfg, highspec.cfg, veryhighspec.cfg, то есть каждая цифра в квадратных скобках соответствует конкретному уровню графики. Получаем, что когда переключается уровень графики на тот или иной, то активируется соответствующий конфигурационный файл, из которого считывается значение параметра sys_spec_Full и, исходя из этого значения, применяется блок параметров под цифрой в квадратных скобках.
Если мы переключим уровень графики на Very High, активировав конфиг veryhighspec.cfg со значением sys_spec_Full = 4, то активируется блок параметров со значением =4.
[4]
sys_spec_ObjectDetail=4
sys_spec_Shading=4
sys_spec_VolumetricEffects=4
sys_spec_Shadows=4
sys_spec_Texture=4
sys_spec_Physics=4
sys_spec_PostProcessing=4
sys_spec_Particles=4
sys_spec_Sound=4
sys_spec_Water=4
sys_spec_GameEffects=4
sys_spec_light=4
Вернёмся в начало файла и рассмотрим следующее:
[default]
; default of this CVarGroup
= 3
Этот участок кода означает, что по умолчанию для движка/игры установлены высокие настройки графики (High), что активирует highspec.cfg со значением sys_spec_Full = 3, что активирует блок параметров со значением =3:
sys_spec_ObjectDetail=3
sys_spec_Shading=3
sys_spec_VolumetricEffects=3
sys_spec_Shadows=3
sys_spec_Texture=3
sys_spec_Physics=3
sys_spec_PostProcessing=3
sys_spec_Particles=3
sys_spec_Sound=3
sys_spec_Water=3
sys_spec_GameEffects=3
sys_spec_light=3
Стоит упомянуть о строке ; default of this CvarGroup, где символ точки с запятой «;» означает, что строка является комментарием, то есть она пропускается интерпретатором при выполнении. Можно писать свои комментарии, в том числе на кириллице.
Далее рассмотрим конфигурационный файл с названием sys_spec_ObjectDetail.cfg. Здесь можно увидеть список параметров, влияющих на графическую составляющую, которые мы искали:
[default]
; default of this CVarGroup
= 3
ca_AttachmentCullingRation=360
es_DebrisLifetimeScale=1
e_DecalsLifeTimeScale=2
e_DecalsOverlapping=1
e_LodMin=0
e_LodRatio=20
e_MaxViewDistSpecLerp=1
e_MergedMeshesInstanceDist=1.0
e_MergedMeshesPool=8192
e_ObjQuality=3
e_OcclusionCullingViewDistRatio=1
e_TerrainLodRatio=1
e_TerrainOcclusionCullingMaxDist=200
e_Tessellation=0
e_VegetationMinSize=0
e_ViewDistMin=10
e_ViewDistRatio=100
e_ViewDistRatioCustom=100
e_ViewDistRatioDetail=100
e_ViewDistRatioLights=50
e_ViewDistRatioVegetation=100
r_DrawNearZRange=0.12
r_FlaresTessellationRatio=1
r_SilhouettePOM=0
sys_flash_curve_tess_error=2
[1]
ca_AttachmentCullingRation=145
es_DebrisLifetimeScale=0.6
e_DecalsLifeTimeScale=1
e_LodRatio=10
e_MaxViewDistSpecLerp=0.5
e_ObjQuality=1
e_TerrainOcclusionCullingMaxDist=130
e_VegetationMinSize=0.5
e_ViewDistRatio=50
e_ViewDistRatioCustom=60
e_ViewDistRatioDetail=25
e_ViewDistRatioLights=25
e_ViewDistRatioVegetation=50
r_FlaresTessellationRatio=0.25
sys_flash_curve_tess_error=4
[2]
ca_AttachmentCullingRation=300
es_DebrisLifetimeScale=0.8
e_LodRatio=15
e_ObjQuality=2
e_ViewDistRatio=75
e_ViewDistRatioDetail=35
e_ViewDistRatioVegetation=75
[4]
ca_AttachmentCullingRation=400
e_LodRatio=40
e_MergedMeshesInstanceDist=2.0
e_MergedMeshesPool=16384
e_ObjQuality=4
e_TerrainLodRatio=0.5
e_Tessellation=1
e_ViewDistRatio=125
e_ViewDistRatioCustom=125
e_ViewDistRatioDetail=125
e_ViewDistRatioLights=75
e_ViewDistRatioVegetation=125
r_DrawNearZRange = 0.08
r_SilhouettePOM=1
Принцип тот же. По умолчанию выбраны высокие настройки графики, активируется highspec.cfg со значением sys_spec_Full = 3, что активирует блок параметров =3:
= 3
ca_AttachmentCullingRation=360
es_DebrisLifetimeScale=1
e_DecalsLifeTimeScale=2
e_DecalsOverlapping=1
e_LodMin=0
e_LodRatio=20
e_MaxViewDistSpecLerp=1
e_MergedMeshesInstanceDist=1.0
e_MergedMeshesPool=8192
e_ObjQuality=3
e_OcclusionCullingViewDistRatio=1
e_TerrainLodRatio=1
e_TerrainOcclusionCullingMaxDist=200
e_Tessellation=0
e_VegetationMinSize=0
e_ViewDistMin=10
e_ViewDistRatio=100
e_ViewDistRatioCustom=100
e_ViewDistRatioDetail=100
e_ViewDistRatioLights=50
e_ViewDistRatioVegetation=100
r_DrawNearZRange=0.12
r_FlaresTessellationRatio=1
r_SilhouettePOM=0
sys_flash_curve_tess_error=2
Подобный список параметров можно обнаружить в остальных конфигурационных файлах.
Ещё стоит отметить, что если какие-то параметры упоминаются в одном блоке значений, а в другом нет, то у них будут значения, которые были в блоке, где им были присвоены значения.
Создание своего конфигурационного файла.
Как упоминалось в самом начале статьи, что если присмотреться к значениям для параметров в стандартных конфигах, то становится понятно, что они довольно не сбалансированы. Для настроек выше среднего значения слишком перекручены, а ниже — слишком занижены. Есть два пути это исправить:
-
Отредактировать значения у параметров в стандартных конфигурационных файлах по своему желанию.
-
Создать свой или свои конфигурационные файлы с желаемыми параметрами и значениями.
Но прежде, чем приступить к настройке, стоит ознакомиться с важным нюансом, а именно с белым списком (whitelist) параметров и допустимых диапазонов их значений. Оставляю это для самостоятельного ознакомления:
Итак, первый вариант с простым редактированием стандартных конфигурационных файлов слишком скучный, поэтому покажу пример создания своего, который будет включать в себя необходимые параметры.
Примечание: Напомню, что мы работаем с файлами в <Root CRYENGINE>\engine\engine.pak\Config\CVarGroups\
Итогом будет переделка этого:
В такое:
Было сделано так:
1. Создан текстовый файл с желаемым названием, в примере это sys_spec_TCF.cfg.
Примечание: Если при работе с engine.pak будет появляться ошибка, что его нельзя редактировать, то придётся его полностью перепаковать.
2. Из стандартных конфигурационных файлов (sys_spec_GameEffects.cfg, sys_spec_Light.cfg и так далее) в него были скопированы все параметры и их значения в соответствующие блоки параметров с номером уровня графики.
3. Итоговое содержимое (очень длинный список):
[default]
; default of this CVarGroup
=3
mfx_Timeout=0.01
ca_AttachmentCullingRation=300
e_OcclusionCullingViewDistRatio=1
e_MergedMeshesInstanceDist=1.0
e_MergedMeshesPool=16384
e_TerrainLodRatio=1
e_TerrainOcclusionCullingMaxDist=180
e_LodRatio=30
e_LodMin=0
e_LodMinTris=1
e_MaxViewDistSpecLerp=0.8
e_ViewDistRatio=85
e_ViewDistRatioCustom=85
e_ViewDistRatioDetail=50
e_ViewDistRatioLights=50
e_ViewDistRatioVegetation=100
e_ViewDistMin=10
e_VegetationMinSize=0
e_CoverageBufferRastPolyLimit=500000
e_GeomCacheBufferSize=256
cl_DefaultNearPlane=0.15
r_DrawNearZRange=0.1
es_DebrisLifetimeScale=1
e_DecalsLifeTimeScale=2
e_DecalsOverlapping=1
e_DecalsForceDeferred=0
r_DeferredDecals=1
;
параметры взяты из
sys_spec_Particles
e_ParticlesMaxScreenFill=128
e_ParticlesMotionBlur=0
e_ParticlesMinDrawPixels=1
e_ParticlesObjectCollisions=2
r_ParticlesHalfRes=0
e_ParticlesQuality=4
;
параметры взяты из
sys_spec_PostProcessing
r_MotionBlur=0
q_ShaderHDR=3
q_ShaderPostProcess=2
r_ChromaticAberration=0
r_ColorGrading=2
r_ColorGradingChartsCache=4
r_DepthOfField=2
r_DepthOfFieldDilation=0
r_HDRBrightLevel=1.0
r_HDRRendering=1
r_MotionBlurMaxViewDist=32
r_MotionBlurQuality=1
r_MotionBlurShutterSpeed=125
r_PostProcessHUD3DCache=0
r_RainMaxViewDist_Deferred=150
r_Sharpening=0
r_SunShafts=2
r_TranspDepthFixup=1
;
параметры взяты из
sys_spec_Physics
es_MaxPhysDist=100
es_MaxPhysDistInvisible=25
e_PhysProxyTriLimit=15000
e_CullVegActivation=50
e_FoliageWindActivationDist=25
e_PhysOceanCell=0.5
g_breakage_particles_limit=160
g_tree_cut_reuse_dist=0
p_gravity_z=-13
p_max_MC_iters=6000
p_max_object_splashes=3
p_max_substeps=5
p_max_substeps_large_group=5
p_num_bodies_large_group=100
p_splash_dist0=7
p_splash_dist1=30
p_splash_force0=10
p_splash_force1=100
p_splash_vel0=4.5
p_splash_vel1=10
v_vehicle_quality=4
r_UseMergedPosts=1
r_ParticlesTessellation=1
sys_flash_curve_tess_error=2
;
отключение обычной тесселяции и
POM,
по необходимости включить для этого уровня графики
r_FlaresTessellationRatio=1
e_Tessellation=0
r_SilhouettePOM=0
;
параметры взяты из
sys_spec_Shading
r_DeferredShadingTiled=0
r_DeferredShadingTiledHairQuality=1
r_deferredShadingFilterGBuffer=0
e_DynamicLightsMaxEntityLights=16
e_GI=0
e_LightVolumes=1
e_SkyUpdateRate=1
e_VegetationUseTerrainColor=1
r_DetailDistance=6
r_EnvTexUpdateInterval=0.05
r_Refraction=1
r_ssdo=1
r_ssdoHalfRes=2
r_SSReflections=1
r_SSReflHalfRes=1
r_DeferredShadingSSS=1
sys_flash_edgeaa=1
e_svoti_LowSpecMode=3
e_svoTI_RsmConeMaxLength=8
e_svoTI_RsmUseColors=1
;
параметры взяты из
sys_spec_Texture
r_DynTexAtlasCloudsMaxSize=32
r_DynTexAtlasSpritesMaxSize=32
r_DynTexMaxSize=128
r_EnvCMResolution=2
r_EnvTexResolution=3
r_ImposterRatio=1
r_TexAtlasSize=2048
r_TexMaxAnisotropy=16
r_TexMinAnisotropy=16
r_TexNoAnisoAlphaTest=0
;
параметры взяты из
sys_spec_Quality
q_ShaderGeneral=3
q_ShaderMetal=3
q_ShaderGlass=3
q_ShaderVegetation=3
q_ShaderIce=3
q_ShaderTerrain=3
q_ShaderShadow=3
q_ShaderFX=3
q_ShaderSky=3
q_Renderer=3
q_ShaderWater=3
;
параметры взяты из
sys_spec_Shadows
e_GsmLodsNum=5
e_GsmRange=3
e_ParticlesShadows=1
e_Shadows=1
e_ShadowsBlendCascades=1
e_ShadowsCastViewDistRatio=0.8
e_ShadowsLodBiasFixed=0
e_ShadowsMaxTexRes=1024
e_ShadowsPoolSize=4096
e_ShadowsResScale=4
e_ShadowsTessellateCascades=1
e_ShadowsTessellateDLights=0
e_ShadowsUpdateViewDistRatio=256
r_DrawNearShadows=1
r_FogShadows=2
r_FogShadowsWater=0
r_ShadowBlur=2
r_ShadowJittering=2.5
r_ShadowPoolMaxFrames=30
r_ShadowPoolMaxTimeslicedUpdatesPerFrame=100
r_ShadowsPCFiltering=1
r_ShadowsCache=5
r_ShadowsCacheResolutions=6324,4214,2810,1872,624
r_ShadowsUseClipVolume=1
e_ObjShadowCastSpec=3
;
параметры взяты из
sys_spec_TextureResolution
r_TexturesstreamingMinUsableMips=8
r_texturesstreamingSkipMips=0
; sys_spec_VolumetricEffects
e_Clouds=1
r_Beams=1
;
параметры взяты из
sys_spec_Water
e_WaterOceanFFT=1
e_WaterTessellationAmount=10
e_WaterTessellationAmountX=10
e_WaterTessellationAmountY=10
e_WaterTessellationSwathWidth=10
r_WaterReflectionsMinVisiblePixelsUpdate=0.05
r_WaterTessellationHW=0
r_WaterUpdateDistance=0.2
r_WaterUpdateFactor=0.0
r_WaterVolumeCaustics=1
r_WaterVolumeCausticsDensity=256
r_WaterVolumeCausticsMaxDist=35
r_WaterVolumeCausticsRes=1024
r_WaterVolumeCausticsSnapFactor=1
; отключение использование шейдерного кэша для платформ отличных от
PC
r_ShadersDurango=0
r_ShadersGLES3=0
r_ShadersOrbis=0
r_ShadersExport=0
r_ShadersLogCacheMisses=0
;
максимальная дистанция отрисовки тесселяции
e_TessellationMaxDistance=15
;
использовать многоядерность
r_multithreaded=2
;
активация поддержки нескольких дискретных
GPU
r_MultiGPU=1
s_ObstructionMaxValue=0
[1]
e_ViewDistRatio=75
e_ViewDistRatioCustom=60
e_ViewDistRatioDetail=25
e_ViewDistRatioLights=25
e_ViewDistRatioVegetation=70
e_VegetationMinSize=0.5
e_ParticlesMaxScreenFill=64
e_ParticlesMinDrawPixels=1.5
r_ParticlesHalfRes=1
r_ParticlesTessellation=0
e_ParticlesQuality=2
r_DeferredShadingTiledHairQuality=0
r_DeferredShadingSSS=0
r_DetailDistance=4
r_EnvTexUpdateInterval=0.075
e_DynamicLightsMaxEntityLights=7
e_ShadowsMaxTexRes=512
e_GsmLodsNum=4
e_ShadowsBlendCascades=0
e_ShadowsLodBiasFixed=1
r_FogShadows=0
r_ShadowBlur=0
e_ParticlesShadows=0
q_ShaderHDR=1
r_MotionBlur=0
r_DynTexAtlasCloudsMaxSize=24
r_DynTexAtlasSpritesMaxSize=16
r_ImposterRatio=2
r_TexMaxAnisotropy=8
r_TexMinAnisotropy=8
r_TexNoAnisoAlphaTest=1
q_ShaderGeneral=1
q_ShaderMetal=1
q_ShaderGlass=1
q_ShaderVegetation=1
q_ShaderIce=1
q_ShaderTerrain=1
q_ShaderShadow=1
q_ShaderFX=1
q_ShaderSky=1
q_Renderer=1
q_ShaderWater=1
e_svoti_LowSpecMode=6
e_svoTI_RsmConeMaxLength=4
e_svoTI_RsmUseColors=0
r_TexturesStreamPoolSize=1024
r_WaterVolumeCaustics=0
r_WaterVolumeCausticsRes=512
r_WaterTessellationHW=0
[2]
e_ShadowsMaxTexRes=512
e_ParticlesShadows=0
e_ViewDistRatioVegetation=80
e_VegetationMinSize=0.5
r_ParticlesHalfRes=1
r_ParticlesTessellation=0
e_ParticlesQuality=2
e_DynamicLightsMaxEntityLights=12
r_TexturesStreamPoolSize=2048
q_ShaderGeneral=2
q_ShaderMetal=2
q_ShaderGlass=2
q_ShaderVegetation=2
q_ShaderIce=2
q_ShaderTerrain=2
q_ShaderShadow=2
q_ShaderFX=2
q_ShaderSky=2
q_Renderer=2
q_ShaderWater=2
r_DeferredShadingTiledHairQuality=0
r_DeferredShadingSSS=0
r_WaterTessellationHW=0
[3]
r_TexturesStreamPoolSize=4096
r_WaterTessellationHW=0
[4]
e_ParticlesMaxScreenFill=160
e_ParticlesMotionBlur=0
r_DetailDistance=8
r_MotionBlurQuality=2
r_DeferredShadingTiledHairQuality=2
r_SSReflHalfRes=0
r_UseMergedPosts=3
q_ShaderPostProcess=3
r_ColorGradingChartsCache=0
e_ShadowsMaxTexRes=2048
r_FogShadows=1
r_ShadowBlur=3
e_ShadowsTessellateDLights=1
e_ObjShadowCastSpec=3
e_svoti_LowSpecMode=2
e_svoTI_RsmConeMaxLength=12
e_svoTI_RsmUseColors=1
r_TexturesStreamPoolSize=6144
r_WaterTessellationHW=0
e_Tessellation=
1
r_SilhouettePOM=1
Стена текста обширна, но наглядна. Для удобства можно понаписать больше комментариев, используя в начале строки знак точки с запятой «;» (без кавычек).
Примечание: Если возникнет желание применять у себя приведённый список параметров и их значений, то настоятельно рекомендую ознакомиться с описанием каждого параметра, а так же протестировать влияние на свой проект, так как некоторые значения могут оказаться не оптимальными под тот или иной проект. Более того, некоторые параметры могут быть устаревшими и отсутствовать в вашей версии движка. Проверить наличие параметра и его значение можно с помощью Console Variables:
4. Редактируем sys_spec_Full.cfg. Так как конфиг был назван sys_spec_TCF.cfg, то будет прописан параметр с соответствующим названием и значением для него по номеру уровня графики:
[default]
; default of this CVarGroup
=3
[1]
sys_spec_TCF=1
[2]
sys_spec_TCF=2
[3]
sys_spec_TCF=3
[4]
sys_spec_TCF=4
Вот и всё, собственный конфигурационный файл с названием sys_spec_TCF.cfg готов и будет активироваться при смене уровня графики.