The Witcher 4 (Polaris): Best user.settings for UE5 Nanite

The transition to Nanite means that “LOD popping” is technically a thing of the past. However, Nanite can be extremely VRAM-intensive in dense foliage areas. To maintain a stable 60 FPS on current-gen hardware, you must manage the Nanite Streaming Pool and Visible Pixel Edge limits.

File Path

  1. Navigate to: %LocalAppData%\Polaris\Saved\Config\Windows\
  2. Open: Engine.ini (This replaces the old user.settings for engine-level Nanite tweaks).
  3. Note: The game creates these files after the first launch.

Optimized “Witcher Polaris” Configuration Table

ParameterRecommended ValueTechnical Purpose
r.Nanite.MaxPixelsPerEdge4.0The Performance Sweet Spot. Increases the triangle size slightly to save GPU cycles.
r.Nanite.Streaming.PoolSize2048Allocates 2GB of VRAM specifically for Nanite mesh data.
r.Nanite.ViewMeshLODBias0.5Slightly reduces detail on distant meshes to prevent VRAM overflow.
r.Nanite.AllowTessellation0Disables additional tessellation to save resources in high-density forests.
[SystemSettings]
r.Nanite=1
r.Nanite.MaxPixelsPerEdge=4.0
r.Nanite.Streaming.PoolSize=2048
r.Nanite.Streaming.NumInitialPages=4096
r.Nanite.ViewMeshLODBias=0.5
r.Nanite.AllowTessellation=0
r.VT.MaxAnisotropy=8
r.Shadow.Virtual.MaxPhysicalPages=4096

HowTo: Engineering the Continent in UE5

Follow these GameEngineer.net technical steps to optimize the Polaris engine:

  1. Nanite Foliage Management: The Witcher 4 uses Nanite Foliage, which is different from standard static meshes. If you experience stutters while riding through woods, ensure r.Nanite.MaxPixelsPerEdge is set to 4.0 or higher. This tells the engine that individual triangles don’t need to be smaller than 4 pixels, significantly reducing the Vertex Count ($V_{count}$) without a noticeable loss in visual quality.
  2. Virtual Shadow Maps (VSM): Nanite works best with VSM. In your config, ensure r.Shadow.Virtual.MaxPhysicalPages=4096. This allows the engine to cache shadows for millions of Nanite-rendered leaves, preventing the CPU from choking on shadow draw calls.
  3. The VRAM Buffer: Because Nanite “streams” geometry, it requires a fast NVMe SSD. If you are on a slower drive, increase r.Nanite.Streaming.NumInitialPages to 8192 to preload more geometry into your RAM, reducing “mesh pop-in” during high-speed travel on horseback.
  4. Lumen and Nanite Sync: Nanite provides the “Proxy” meshes that Lumen uses for light bounces. Setting r.Nanite.ViewMeshLODBias=0.5 ensures that the lighting engine has enough geometric detail to calculate realistic “God Rays” through the trees without the $5\text{ms}$ frame-time penalty of full-detail proxies.
  5. Shader Pre-Compilation: UE5 games often suffer from “Shader Stutter.” In 2026, Polaris includes a pre-compilation step, but adding r.ShaderCompiler.JobPriority=1 to your Engine.ini ensures the background compiler doesn’t steal cycles from your main game thread.

Technical Explanation: Raster Bins and Cluster Culling

In The Witcher 4, the engine uses Cluster-Based Culling. Traditional games would render an entire tree even if you could only see one branch. Nanite breaks that tree into “Clusters” of 128 triangles.

By adjusting r.Nanite.MaxPixelsPerEdge, you are modifying the Rasterization Bin threshold. When a cluster’s triangles are smaller than your setting, the engine uses a Software Rasterizer ($SW_{rast}$), which is highly efficient on modern GPUs. If they are larger, it uses the Hardware Rasterizer ($HW_{rast}$). Finding the balance where most foliage stays in the “Software Bin” is the key to achieving 60 FPS in a world as dense as The Witcher 4‘s Northern Kingdoms.

Leave a Comment