How to Improve Texture Streaming GPU performance in UE5 over 20% increase on GPU memory [Solved]

In my research into Windows TextureStreaming and Visual Studio 2022 17.1 performance.
I have found that adding setting in the config file
D:\Program Files\Epic Games\UE_5.0EA\Engine\Config\Windows\ WindowsEngine.ini
The following lines contained
[TextureStreaming]
; PoolSizeVRAMPercentage is how much percentage of GPU Dedicated
;VRAM should be used as a TexturePool cache for streaming textures (0 - unlimited streaming)
PoolSizeVRAMPercentage=70
When looking at the GPU Performance in Windows Task Manager Performance Tab.
The Dedicated GPU memory is locked at 1.4GB/2.0GB which means that I CANNOT use any more than 1.4GB,
hence the Texture Streaming error displayed on streaming in the Valley of Ancients Project Sample,
my UE5 converted free Epic Infiltrator Project
I have now changed the value from 70 to 0

[TextureStreaming]
; PoolSizeVRAMPercentage is how much percentage of GPU Dedicated VRAM should be used as a TexturePool cache for streaming textures (0 - unlimited streaming)
;PoolSizeVRAMPercentage=70
;@VS2022 TexturePool cache for streaming textures (0 - unlimited streaming)
PoolSizeVRAMPercentage=0

Now shutdown UE5 make the change to and restarted Via Launcher
D:\Program Files\Epic Games\UE_5.0EA\Engine\Config\Windows\ WindowsEngine.ini
PoolSizeVRAMPercentage=0
When I restarted the UE5 project and played the project I am now using 95% of GPU Dedicated VRAM to be used as a TexturePool cache, this was 70%

When looking at the GPU Performance in Windows Task Manager Performance Tab.
The Dedicated GPU memory is initially at 0.2GB/2.0GB so I am using less than the original 1.4GB/2.0GB setting.
Next, playing the project I have found the value 1.9GB/2.0GB.
This means I am now using 95% of GPU Dedicated VRAM should be used as a TexturePool cache, which is the highest value I have ever used.

When I stop the project usage falls from 95% of GPU Dedicated VRAM to 75% or 1.5GB/2.0GB.
In my UE5 converted free Epic Infiltrator Project, where I converted Static Meshes to Nanite,
I can see GPU Dedicated VRAM increasing and decreasing on demand from the program.

Please try this and report your finding especially developers with 8GB Dedicated VRAM graphics cards
Thanks,
Jimbo

23 Likes

Im struggling with the “Video Memory Has Been exhausted” message in UE5.

I tried what you suggested above.
I have also tried changing to “r.ReflectionCaptureResolution=512” changed down from 2048 in the DefaultEngine.ini file.

My PC is quite capable:
AMD Ryzen 9
RTX 3070 Vision OC 8G
64GB RAM
SSD Storage

I am reasonably new to Unreal and cant resolve this issue.

Can someone suggest a solution please?

Dean

3 Likes

Did you find a solution? I’m going through the same problem.

2 Likes

In my research into Windows TextureStreaming and Visual Studio 2022 17.1 performance.
I have found that adding setting in the config file

C:\Users\Owner\source\repos\UE50\Engine\Config\BaseEngine.ini
The following lines contained
[TextureStreaming]
NeverStreamOutRenderAssets=False
MinTextureResidentMipCount=7
;originally
;PoolSize=160
; make PoolSize 8 times bigger
PoolSize=1280

Also see the command from
BaseInput.ini:+ManualAutoCompleteList=(Command=“DumpTextureStreamingStats”,Desc=“Dump current streaming stats (e.g. pool capacity) to the log”)

3 Likes

Hello,
It seems that this issue occurs due to a bug using DX12 (DirectX 12) with “lumen” which is the default “Dynamic Global Illumination Method” (in the the projects DefaultEngine.ini we have DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 and r.DynamicGlobalIlluminationMethod=1). Hence, you need to either change your RHI settings or your dynamic GI method.

Changing RHI settings
You can either make DefaultGraphicsRHI=DefaultGraphicsRHI_DX11 in DefaultEngine.ini (to use Direct X 11 rather than 12) or go to “Edit → Project settings → Platforms → Windows → Default RHI” and select DirectX 11 or Vulkan (I didn’t test it yet) .

See an example below:
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
DefaultGraphicsRHI=DefaultGraphicsRHI_DX11

Changing the Dynamic GI method
You can change the default DynamicGlobalIlluminationMethod to “None” (or any other method) directly in DefaultEngine.ini , i.e " r.DynamicGlobalIlluminationMethod=0", or from “Edit → Project settings → Engine → Rendering-> Global Illumination → Dynamic Global Illumination Method” and select your preferred method (None, lumen, Screen Space, Standalone Ray Traced (Deprecated) ). These methods correspond to 0, 1, 2, 3 respectively.

You can change the default behavior by going to the config folder in your UE5 project then open DefaultEngine.ini. Under [/Script/Engine.RendererSettings], set r.DynamicGlobalIlluminationMethod to 0.

See an example below:
[/Script/Engine.RendererSettings]
r.ReflectionMethod=1
r.GenerateMeshDistanceFields=True
;r.DynamicGlobalIlluminationMethod=1
r.DynamicGlobalIlluminationMethod=0
r.Lumen.TraceMeshSDFs=0
r.Shadow.Virtual.Enable=1
r.Mobile.EnableNoPrecomputedLightingCSMShader=1

Shabayek

5 Likes

youre turning off lumen…this isnt a fix…

6 Likes

zeth_foxster
youre turning off lumen…this isnt a fix…

Yes, I know. Even the Unreal 5 in Lumen documentation admits that on anything like an Xbox One X or an Xbox One any program will not meet the criteria to launch a game on Xbox Gamestore. The Xbox Series X is the only one Unreal Engine 5 supports the Xbox Series S is NOT supported for development!!.

This is trying to fix the Texture Streaming out of memory problems I never said it would fix Lumen performance of 30FPS as the GPU does all the work for Lumen

1 Like

Did both of that, except that I set the VRAM Percentage to 95 instead of 0 and it works perfectly fine now! Thanks a lot

8 Likes

thx,
I modified it according to your method and the problem is solved.
Great to be able to use lumen and nanite

Where is actually the location of that? Thanks in advance!

Hi @GuidoA77,
The file location is
C: \Program Files\Epic Games\UE_5.0\Engine\Config\Windows\ WindowsEngine.ini
For the Epic Launcher binary version.

Code change is
[TextureStreaming]
; PoolSizeVRAMPercentage is how much percentage of GPU Dedicated VRAM should be used as a TexturePool cache for streaming textures (0 - unlimited streaming)
;PoolSizeVRAMPercentage=70

;@VS2022 TexturePool cache for streaming textures (0 - unlimited streaming)
PoolSizeVRAMPercentage=0

4 Likes

Thank you buddy! I found it! Let’s try it!

Thank you, through your method did solve, but there will still be a warning in the material, is this important?

Haven’t tried it yet, but in the official docs, it says you should adjust your materials with nodes specifically made for Path Tracing (if your are using this one). As always, it is just briefly mentioned and not explained at all
Path Tracer in Unreal Engine | Unreal Engine 5.0 Documentation under “Limitations”, the pen-ultimate bullet point and the one before that

Hope it helps!

These two options appear to have solved the problems I was having with memory on a 3080. Thank you so much, everyone!

Hello:
I’ve found first catalog. And UE works better. But cannot find “C:\Users\Owner\source\repos\UE50\Engine\Config\BaseEngine.ini”
Im trying to find in: C:\Users\mnosz\source\repos\UE50\Engine\Config\ but there’s no such catalog. I can see hide files.
ps using UE 5.1

Hey everyone,

IDK if anyone is having the same problems as before I had serious Texture Streaming issues on Linux in UE5.1 release.

What I did to solve this was to add the following options to my DefaultGame.ini:

r.Streaming.FullyLoadUsedTextures=True
Compat.UseDXT5NormalMaps=False
r.SkinCache.CompileShaders=True
r.RayTracing=True
r.RayTracing.Shadows=True
r.RayTracing.Skylight=True
r.RayTracing.UseTextureLod=True

I originally tried turning off Texture Streaming, which did work but maxed out my VRAM usage (RTX 3070 Ti). However, setting up hardware ray tracing and enabling keep in memory if used seemed to work the best.

Let me know if this helps anyone else!

2 Likes

This, in combination with the other fixes, was the ONLY thing that worked. THANK YOU!

[fixed] yeah, Thx, for using these two methods together and balancing the PoolSize number, for my part a 1080ti 11G vram poolsize at 1500-2000mb, depending on your scene, but normally could work. Thanks for you guys

Thank you for the tips. I used both settings but from my testing the initial poolsize value in BaseEngine.ini had the biggest impact. I ended up pushing it to 10000 since my card has 10GB of VRAM. I’m not sure the logic is correct here, because I’m not even sure the value is supposed to be in MB but it seems to be working.

Would there be any disadvantage to unlimit it by putting it to 99999 ? I tried setting 0 as a value but it used less VRAM available than when I set it to 10000.

I’m mostly concerned about stability and performance. All in all I feel like we are just tinkering with settings that should be properly explained by a UE dev somewhere so that there are less guessing games.

4 Likes