Настройка конфигурационных файлов уровней графики в CRYENGINE 5.3. Оптимизация CRYENGINE 5.

04. декабря 2017 CRYENGINE 5 0

Те, кто плотно работал с движком, наверняка заметили, что стандартные значения для параметров уровней графики не оптимальны. В этой статье мы разберёмся с устройством и настройкой конфигурационных файлов, отвечающих за уровни графики в движке, и создадим свои наборы параметров с желаемыми значениями.

Знакомство со стандартными конфигурационными файлами.

По умолчанию в движке есть 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.cfgsys_spec_Full = 1
  • medspec.cfgsys_spec_Full = 2
  • highspec.cfgsys_spec_Full = 3
  • veryhighspec.cfgsys_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

Подобный список параметров можно обнаружить в остальных конфигурационных файлах.

Ещё стоит отметить, что если какие-то параметры упоминаются в одном блоке значений, а в другом нет, то у них будут значения, которые были в блоке, где им были присвоены значения.

Создание своего конфигурационного файла.

Как упоминалось в самом начале статьи, что если присмотреться к значениям для параметров в стандартных конфигах, то становится понятно, что они довольно не сбалансированы. Для настроек выше среднего значения слишком перекручены, а ниже слишком занижены. Есть два пути это исправить:

  1. Отредактировать значения у параметров в стандартных конфигурационных файлах по своему желанию.

  2. Создать свой или свои конфигурационные файлы с желаемыми параметрами и значениями.

Но прежде, чем приступить к настройке, стоит ознакомиться с важным нюансом, а именно с белым списком (whitelist) параметров и допустимых диапазонов их значений. Оставляю это для самостоятельного ознакомления:

http://docs.cryengine.com/display/CEPROG/Guide+to+releasing+CRYENGINE+V+projects#GuidetoreleasingCRYENGINEVprojects-SettingupCVarWhitelist

Итак, первый вариант с простым редактированием стандартных конфигурационных файлов слишком скучный, поэтому покажу пример создания своего, который будет включать в себя необходимые параметры.

Примечание: Напомню, что мы работаем с файлами в <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 готов и будет активироваться при смене уровня графики.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *