Texture Streaming Pool Allocation Decision Matrix
| Installed GPU VRAM | Default UE Pool Size | Recommended r.Streaming.PoolSize | Texture Pop-in Elimination | Risk of DXGI Out of Memory Crash |
|---|---|---|---|---|
| 6 GB - 8 GB VRAM | 1000 - 1500 MB | 2000 - 2500 MB | High (Fixes 90% of muddy surface pop-ins) | Very Low (Safe margin for OS and frame buffers) |
| 10 GB - 12 GB VRAM | 2000 MB | 4000 - 5000 MB | Near Total (All nearby surfaces load high-res mipmaps) | Negligible |
| 16 GB - 24 GB VRAM | 3000 MB | 8000 - 10000 MB | 100% Total (Textures permanently stream at native 4K) | Zero |
| Low-End (< 6 GB) | 1000 MB | 1500 MB (Do NOT disable limit) | Moderate (Must drop overall Texture Quality setting) | Moderate (Risk of VRAM oversubscription) |
In modern PC games developed on Unreal Engine 4 and Unreal Engine 5 (Star Wars Jedi: Survivor, STALKER 2, Silent Hill 2, Black Myth: Wukong), players running on high-end hardware frequently observe an absurd visual glitch: despite selecting 'Epic' or 'Ultra' texture quality, walls, character clothes, and signs remain permanently rendered in blurry, low-resolution mipmaps. In developer console modes or log files, the engine emits the red warning: TEXTURE STREAMING POOL OVER [Number] MB BUDGET.
The Architectural Flaw Behind the Streaming Pool Bottleneck
- Hardcoded Conservative Pool Caps: By default, Unreal Engine configurations historically assign a static texture memory pool (often hardcoded between 1000MB and 2000MB) designed for baseline consoles or low-memory PCs.
- The Eviction Cascade: When on-screen scene geometry and uncompressed texture assets exceed this static ceiling, the engine refuses to allocate additional VRAM. To stay within budget, it forcibly evicts high-resolution mipmaps from active video memory, locking nearby textures to blurry low-resolution placeholders.
- The Trap of
r.TextureStreaming=0: Some outdated community guides advise completely disabling texture streaming withr.TextureStreaming=0. While this forces every texture to load at maximum resolution, it floods VRAM instantly on dense open-world levels, triggering fatalDXGI_ERROR_OUT_OF_MEMORYdesktop crashes within minutes.
Step-by-Step Engine.ini Tuning Protocol
To expand the texture streaming pool permanently without breaking game stability:
- Locate the Game Configuration Folder:
- Navigate to your user AppData directory:
%LOCALAPPDATA%\[GameName]\Saved\Config\WindowsNoEditor\Engine.ini - For Unreal Engine 5 titles, the folder is frequently named:
%LOCALAPPDATA%\[GameName]\Saved\Config\Windows\Engine.ini
- Navigate to your user AppData directory:
- Open
Engine.iniwith a text editor (e.g., Notepad). - Append the Console Variables: Scroll to the absolute bottom of the file and add:
[SystemSettings] r.Streaming.PoolSize=4096 r.Streaming.LimitPoolSizeToVRAM=1 r.Streaming.MaxEffectiveScreenSize=0 r.Streaming.Boost=1.2- Value Customization: Set
r.Streaming.PoolSizebased on your physical GPU memory (e.g.,3072for 8GB cards,6144for 12GB cards,8192for 16GB+ cards). - Safety Guardrail:
r.Streaming.LimitPoolSizeToVRAM=1instructs the engine never to allocate texture memory beyond available physical VRAM, preventing out-of-memory crashes.
- Value Customization: Set
- Save and Verify File Attributes:
- Save the file.
- If the game launcher routinely overwrites custom settings on startup, right-click
Engine.ini-> Properties -> check Read-only -> click Apply.
In-Game Console Testing
In games supporting developer console activation (via tilde key ~ or Universal Unreal Engine Unlocker):
- Type
stat streamingand press Enter to view the real-time Texture Streaming Memory HUD. - Verify that Pool Used remains comfortably below Pool Capacity without displaying red warning flags.