The compiling of shaders is supposed to be a one-time process, so when you see the following icon in-game:
Expect some freezing for brief moments. This is normal behavior.
To improve performance, reduce the strain on the CPU, and reduce the impact of shader compilation on gameplay, try the following:
-
Use the
DeviceProfiles.ini
file to:- Enable more Unreal Engine PSO cache;
- Tweak the speed at which stuff is cached, so that when you do compile shaders in-game they wouldn't freeze your game for seconds;
- Reduce the texture LOD (Level-Of-Detail):
- This is because CPU has to manage and sort through a large amount of data related to textures, such as texture coordinates, lighting information, and other properties. Reducing the texture LODs will result in less data for the CPU to manage, and therefore reduce its strain. This can also free up more CPU resources for other tasks, such as managing game logic, AI, animations, and other systems that are heavily dependent on the CPU.
-
Use the
Engine.ini
file to:- May or may not increase input lag due to
r.OneFrameThreadLag=1
(That's the game default).- Remove or set to '0' this CVAR if input lag is unbearable.
- Optimize shader compilation;
- Force disable debug logs to reduce Disk I/O;
- Force disable mouse acceleration;
- Disable shadows;
- Reduce the resolution image by 10% without introducing blur;
- Reduce object view distance by 20% without introducing object pop-in.
- Reduce the number of particles emitted in action scenes;
- Reduce the cost of rendering decals in the scene;
- Perform fewer calculations to render refraction effects without making the saboteur's completely invisible;
- Use less complex skeletal meshes;
- Reduce the overall performance cost of tessellated meshes;
- [/Script/Engine.StreamingSettings] -
Adjust the loading and unloading of levels and their components during runtime;
- These settings should be heavily based on hardware. Each system will probably produce vastly different results.
- However, the general effect should be that you can trade higher load times for less stutters during gameplay.
- Plus some other experimental tweaks that might get removed in the future.
- May or may not increase input lag due to
-
Use the
GameUserSettings.ini
file to:- Set sg.ShadingQuality=0 to control the shading quality of the scenes. We want to use the least processing power possible for shaders;
- Make sure to delete or rename
%LocalAppdata%\Tiger\Saved\*.ushaderprecache
files if you mess with this. The game will recompile them using the new setting.
- Make sure to delete or rename
Note
: sg.ShadingQuality is set to a value of 3 by default. You can't adjust it using in-game UI.
- Set sg.ShadingQuality=0 to control the shading quality of the scenes. We want to use the least processing power possible for shaders;
s.LevelStreamingActorsUpdateTimeLimit
- if set to a very close value to 0, makes you fall below the map;
r.CascadeParticleDetailMode=0
- removes all particles from the game and might result in crashes during some situations;
r.DetailMode=0
- removes some objects from the map, making them see through;
r.TranslucencyVolumeBlur=0
- makes saboteurs stop rendering altogether when they go invisible;
r.ViewDistanceScale
- value close to 0 makes you stop rendering NPCs.
r.EarlyZPass=0
- screws with object occlusion, makes game completely disorienting and unplayable
r.CustomDepth=0
- disables the weapon aura colors
a.Budget.Enabled=0
- disables the animation budget, meaning after the budget is spent, you won't be able to execute animations, making the game unplayable.
fx.MaxCPUParticlesPerEmitter=0
- disables all CPU rendered effects, creating desyncs and game breaking bugs >fx.MaxNiagaraCPUParticlesPerEmitter=0
- disables all Niagara CPU rendered effects, same reason as with the CPU counter part, just felt less buggy?
r.SelectiveBasePassOutputs=1
- stops rendering objects
r.ForwardShading=1
- stops rendering objects
r.SeparateTranslucency=1
- this cvar when misconfigured can disable weapon outlines
- Cap your framerate.
- I recommend using
RivaTuner Statistics Server
. - The in-game frame limiter isn't really stable in terms of holding good frame times.
- For example: I've got a 300Hz refresh rate laptop display. However, I cap 'bloodhunt' FPS using RTSS to 100.
- I recommend using
- Enable NVIDIA Shader Cache using
NVIDIA Profile Inspector
orNVIDIA Control Panel
;- Should be already enabled for most games by default.
- Disable DirectX 12 Shader Cache compilation by deleting or replacing
D3DSCache.dll
component;- This would result in DirectX 12 games not being able to compile DX12 shader cache, because the API to do that would not be available.
- There are multiple ways to go around this:
- Add an empty
D3DSCache.dll
file near the games executable and hope the game tries using it first; - If that doesn't work, you'd have to use a system-wide solution, which involves messing with /Windows/System32 folder and TrustedInstallers.
- Add an empty
- Modify
D3DSCache.dll
with a hex editor to increase the inherent shader cache file size limits;- Unfortunately, most ANTI-CHEAT software (like EAC) will flag the component as 'untrusted system file' and don't inject it for safety reasons. However, you will still be able to play without any issues, so that is also another way on how to disable shader cache.
- Downgrade STEAM Client to a version that still supports the '-no-browser' flag: https://gist.github.com/manciuszz/4e345e89facbf11c75eb3f09fa0b1952
- ... or you can suspend
steamwebhelper.exe
processes using System Informer or other tool; - This will reduce the amount of CPU cycles STEAM client will consume at all times.
- It doesn't affect the launch of games.
- ... or you can suspend
- Remove access from
%LocalAppdata%\Tiger\Saved\Logs
folder, so the game can't write to it.- This will lead to less Disk I/O, which could potentially reduce some I/O related stutters.
- This wouldn't be necessary, if we could totally disable game logs using
Engine.ini
cvars.- You can create these batch scripts in
%LocalAppdata%\Tiger\Saved\Logs
folder to make it easier:-
::Disable Write-Access.bat @echo off icacls . /T /deny %username%:(WD,AD,WA,WEA)
-
::Enable Write-Access.bat @echo off cacls . /e /c /g %username%:f
-
- You can create these batch scripts in
- A system with atleast 32GB of physical RAM can play this game directly from a RAM using a RAM drive. This would result in improved load times, faster asset streaming and lower CPU usage due to faster Disk I/O.
- It's possible to run the game from standby memory too - check out https://github.com/mhtvsSFrpHdE/prefetch
- For a free, open source, RAMDisk solution - check out https://sourceforge.net/projects/imdisk-toolkit/