About this mod
Definitive Unreal "Engine.ini" changes with the goal to remove most stutters, improve performance and stability, decrease input latency, improve picture clarity. All with no visual loss.
- Permissions and credits
- Changelogs
- Donations
After weeks of research and testing, I would like to share my definitive custom "Engine.ini" changes for the game.
My goal was to just include as many optimizations as possible (both for CPU/GPU/RAM/SSD) in order to remove most stuttering (except for specific traversal stuttering which is impossible to fix except by the devs themselves), improve performance, reduce input latency and improve picture clarity (e.g. by removing Film Grain & Chromatic Aberration, optimize DLSS/FSR upscaling and more) all without any visual loss nor introducing glitches or crashes.
You can directly download my Engine.ini to paste/replace or just copy all the lines in it inside your game Engine.ini, which is located in:
(To Uninstall just delete the Engine.ini or all the added lines in GameUserSettings.ini)
DO NOT USE TOGETHER WITH OTHERS "OPTIMIZATION" MODS
(any other mod will be compatible)
Please pay attention to some comment lines after ";" which may be related to specific configurations (e.g. VRR usage, RAM/VRAM amount etc.), so change them accordingly to your hardware.
[Core.System]
r.XGEShaderCompile.Mode=3
r.XGEShaderCompile=1
[SystemSettings]
r.VSync=0 ; Only if you have VRR enabled on your display, otherwise delete it
r.Streaming.PoolSize=12288 ; Only for 16GB VRAM. If you have 24GB use 18432, for 12GB use 9216, for 11GB use 8192, for 10GB use 7168, for 8GB use 6144, for 6GB use 5120, for 4GB use 4096
r.RenderTargetPoolMin=4096 ; Only for 16GB VRAM. If you have 24GB use 6144, for 12GB use 3072, for 11GB use 3072, for 10GB use 2560, for 8GB use 2048, for 6GB use 1536, for 4GB use 1024
r.EarlyZPass=3 ; Only for 16GB+ VRAM. If you have 8-12GB use 2, for less than 8GB use 1
r.Lumen.DiffuseIndirect.AsyncCompute=1 ; Set this to 0 if you notice white flashes in indoor areas
r.Lumen.Reflections.AsyncCompute=1 ; Set this to 0 if you notice white flashes in indoor areas
r.Lumen.Scene.Lighting.AsyncCompute=1 ; Set this to 0 if you notice white flashes in indoor areas
r.Lumen.ScreenProbeGather.AsyncCompute=1 ; Set this to 0 if you notice white flashes in indoor areas
r.IO.UseDirectStorage=1 ; Only if you have an NVMe SSD with DirectStorage support, otherwise delete it
r.OneFrameThreadLag=0 ; This will noticeably reduce input latency, but if you experience drastically lower FPS after using this, delete this line
AudioThread.BatchAsyncBatchSize=256
AudioThread.EnableBatchProcessing=1
bUseAsyncComputeContext=True
csv.trackWaitsGT=0
csv.trackWaitsRT=0
FX.AllowAsyncTick=1
FX.BatchAsync=1
FX.BatchAsyncBatchSize=128
FX.EarlyScheduleAsync=1
fx.Niagara.AsyncCompute=1
fx.Niagara.DebugDraw.Enabled=0
landscape.RenderNanite=1
niagara.CreateShadersOnLoad=1
r.AllowMultiThreadedShaderCreation=1
r.AsyncCompute.ParallelDispatch=1
r.AsyncCompute=1
r.DumpGPU=0
r.D3D11.GPUTimeout=0
r.D3D12.GPUTimeout=0
r.DynamicRes.OperationMode=0
r.Emitter.FastPoolEnable=1
r.FilmGrain=0
r.FinishCurrentFrame=0
r.ForceCPUAccessToGPUSkinVerts=1
r.ForceOcclusionQueryBatching=1
r.GeometryCollection.Nanite.AsyncCompute=1
r.GeometryCollection.Nanite=1
r.GPUCrashDebugging=0
r.GraphicsThread.EnableBackgroundThreads=1
r.GraphicsThread.UseThreadedDestruction=1
r.GTSyncType=2
r.HZBOcclusion=1
r.IO.VirtualTextures=1
r.Lumen.DiffuseIndirect.Allow=1
r.MaxAnisotropy=16
r.NT.Lens.ChromaticAberration.Intensity=0
r.ParallelGraphics=1
r.ParallelShaderCompile=1
r.ParallelTranslucency=1
r.PipelineStateCache.AsyncCompileAfterTypes=1
r.RenderThread.Priority=2
r.RenderThread.EnableTaskGraphThread=1
r.RHI.UseParallelDispatch=1
r.RHICmdBuffer.EnableThreadedCompletion=1
r.RHICmdBypass=0
r.RHICmdUseParallelAlgorithms=1
r.RHICmdUseThread=1
r.RHIThread=1
r.RHIThread.Priority=2
r.SceneColorFringeQuality=0
r.ShaderPipelineCache.AsyncCompileRate=32
r.ShaderPipelineCache.BackgroundBatchSize=32
r.ShaderPipelineCache.BatchTime=3
r.ShaderPipelineCache.Enabled=1
r.ShaderPipelineCache.StartupCache=1
r.Shadow.Virtual.Enable=1
r.Streaming.AmortizeCPUToGPUCopy=1
r.Streaming.Boost=1.5
r.Streaming.DropMips=0
r.Streaming.LimitPoolSizeToVRAM=1
r.Streaming.MaxMipLevelReduction=0
r.Streaming.MipBias=-0.5
r.Streaming.UseAllMips=1
r.TemporalAACurrentFrameWeight=0.15
r.TemporalAASamples=8
r.TemporalAASharpness=0.9
r.TextureStreaming.DiscardUnusedMips=1
r.TextureStreaming.UseDeferredLock=1
r.ThreadedShaderCompilation=1
r.ThreadPool.BackgroundThreadPriority=0
r.ThreadPool.EnableBackgroundThreads=1
r.ThreadPool.EnableHighPriorityThreads=1
r.Tonemapper.GrainQuantization=0
r.Tonemapper.Sharpen=0.5
r.UseAsyncShaderPrecompilation=1
r.VRS.Enable=1
r.VRS.EnableImage=1
r.VRS.ContrastAdaptiveShading=1
r.VRS.Tier=2
Slate.bAllowThrottling=0
[ShaderCompiler]
bAllowAsynchronousShaderCompiling=True
bAllowCompilingThroughWorkerThreads=True
bAsyncShaderCompileWorkerThreads=True
bEnableOptimizedShaderCompilation=True
MaxShaderJobBatchSize=150
MaxShaderJobs=1000
NumUnusedShaderCompilingThreads=2
[ShaderPipelineCache]
r.ShaderPipelineCache.PrecompileBatchTime=5
r.ShaderPipelineCache.PrecompileFrameTime=20
r.ShaderPipelineCache.BackgroundBatchSize=32
r.ShaderPipelineCache.BatchTime=3
[/Script/Engine.Engine]
bAllowMultiThreadedShaderCompile=True
[DevOptions.Shaders]
bAllowShaderCompilingWorker=True
bOptimizeForLocalShaderBuilds=True
bUseBackgroundCompiling=True
WorkerThreadPriority=0
[TextureStreaming]
r.Streaming.MaxTempMemoryAllowed=16384 ; Only for 32GB+ RAM. If you have 16GB use 8192, for 8GB use 4096
r.Streaming.DefragDynamicBounds=1
r.Streaming.FramesForFullUpdate=1
r.Streaming.FullyLoadUsedTextures=1
r.Streaming.UseBackgroundThreadPool=1
r.TextureStreaming=1
r.TextureStreaming.FullyLoadUsedTextures=1
r.TextureStreaming.UseBackgroundThreadPool=1
[Engine.InputSettings]
bEnableMouseSmoothing=False
bViewAccelerationEnabled=False
RawMouseInputEnabled=1
[Engine.RendererSettings]
r.D3D11.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it
r.D3D12.UseAllowTearing=1 ; Only if you have VRR enabled on your display, otherwise delete it
D3D11.AFRUseFramePacing=1
D3D11.AsyncDeferredDeletion=1
D3D11.MaximumFrameLatency=3
D3D12.AFRUseFramePacing=1
D3D12.AsyncDeferredDeletion=1
D3D12.MaximumFrameLatency=3
r.AsyncCreateLightPrimitiveInteractions=1
r.AsyncPipelineCompile=1
r.EnableAsyncComputeVolumetricFog=1
r.RDG.AsyncCompute=1
r.Streaming.UseAsyncRequestsForDDC=1
[Rendering]
r.EnableMultiThreadedRendering=1
[RenderingThread]
bAllowAsyncRenderThreadUpdates=True
bAllowThreadedRendering=True
[/Script/Engine.StreamingSettings]
s.AsyncLoadingThreadEnabled=1
s.AsyncLoadingTimeLimit=10
s.AsyncLoadingThreadPriority=2
s.AsyncLoadingUseFullTimeLimit=1
s.AsyncLoadingUseTimeLimit=1
s.LevelStreamingActorsUpdateTimeLimit=10.0
s.MinBulkDataSizeForAsyncLoading=262144
[/Script/Engine.GarbageCollectionSettings]
gc.MultithreadedDestructionEnabled=1
[/script/akaudio.aksettings]
bEnableMultiCoreRendering=True
[TaskGraph]
TaskGraph.Enable=1
[Physics]
p.AsyncSceneEnabled=1
[CrashReportClient]
bAgreeToCrashUpload=False
bImplicitSend=False
[Core.Log]
Global=none
LogAI=none
LogAnalytics=none
LogAnimation=none
LogBlueprint=none
LogConfig=none
LogCore=none
LogInput=none
LogInteractiveProcess=none
LogLinker=none
LogMemory=none
LogNetwork=none
LogOnline=none
LogOnlineEntitlement=none
LogOnlineEvents=none
LogOnlineFriend=none
LogOnlineGame=none
LogOnlineIdentity=none
LogOnlinePresence=none
LogOnlineSession=none
LogOnlineTitleFile=none
LogOnlineUser=none
LogPakFile=none
LogPhysics=none
LogPluginManager=none
LogRenderer=none
LogRenderTargetPool=none
LogShaderCompiler=none
LogStreaming=none
LogTemp=none
LogUObject=none
+Suppress=Scriptwarning
+Suppress=Error
+Suppress=Scriptlog
+Suppress=Warning
[Engine.ErrorHandling]
bPromptForRemoteDebugging=False
bPromptForRemoteDebugOnEnsure=False
If you found this useful, please consider to support my work on Patreon 🙏🏻
Enjoy!
-P