Witcher 3 Next-Gen DX12 Config Optimization Guide for High FPS (2026)
I’ve sunk hundreds of hours into Geralt’s story. I’ve played the launch version, the modded-to-death version, and now the Next-Gen update. It’s gorgeous. Velen at sunset with RT lighting looks like a painting somebody left out in the rain, in the best way.
It also runs like a wagon with a broken axle on plenty of decent rigs. The DX12 renderer hammers your CPU, shaders compile at the worst possible moments, and VRAM usage climbs fast. I’ve watched RTX 30 and 40 series cards and RX 6000 and 7000 cards hitch while crossing a bridge in Novigrad. The in-game menu gives you presets and a few sliders, but the engine has far more knobs than that, and they live in two text files.
This guide covers what I changed, why, and what to expect. One honest note first: the “you’ll gain 60% FPS!” claims floating around the web are marketing-brain nonsense. Your gain depends on your CPU, GPU, VRAM, and whether you run ray tracing. In my experience, a well-tuned config buys you noticeably smoother frametimes and a solid chunk of average FPS, and the smoothness is the bigger win.
Step Zero: Find the Files and Back Them Up
Go to:
C:\Users\[YourName]\Documents\The Witcher 3\
You’ll find two files that matter:
- user.settings: the main engine and graphics variables
- dx12user.settings: DX12-specific and upscaler parameters
Copy both files somewhere safe before touching anything. I mean it. One typo and the game may reset your settings or refuse to launch, and a backup turns that into a ten-second fix.
Edit with Notepad or Notepad++. If the game keeps overwriting your changes on launch, right-click the file, open Properties, tick Read-only, and hit Apply. The catch is that the in-game menu can’t save changes to a read-only file, so you’ll have to flip that flag off whenever you want to adjust something from the menu.
The Big Offenders: What Eats Your Frames
Before the numbers, here’s the quick map of where the performance goes. This is my ranking after a lot of testing and a lot of swearing.
| Setting Area | Performance Hit | Visual Cost of Trimming | My Verdict |
|---|---|---|---|
| Ray-traced reflections / shadows | Very high | Medium | Turn off if you’re struggling, keep RTGI |
| Screen space reflections | High in wet areas | Low | Cut it, you barely notice |
| Grass density | High in forests and fields | Low to medium | Lower, but not to zero |
| Cascade shadow size and distance | High | Low | Easy win |
| HairWorks AA | Medium to high | Very low | Free FPS, take it |
| Cutscene supersampling | Spiky | None in practice | Disable |
Shadows: The Quiet FPS Thief
Ultra+ shadows are heavy. The engine renders huge shadow maps and pushes the cascades far into the distance, which burns GPU time and also loads the CPU in open areas like Velen and Toussaint.
Three things to look at:
- CascadeShadowSize: Ultra+ sits around 3072 or 4096. Dropping to 2048 saves a lot, and I couldn’t tell the difference in normal play. Shadow edges get a tiny bit softer, and that’s all.
- CascadeShadowDistanceScale0 to 3: These set how far each cascade reaches. Pulling back the far ones (2 and 3) trims the cost in wide landscapes, and nobody studies the shadow on a tree 400 meters away anyway.
- CascadeShadowFadeTweak: Controls how shadows fade with distance. Small adjustments are fine, so don’t go wild.
Grass and Foliage: Pretty, Pricey
The Next-Gen update made fields thicker and pushed visibility far out. Riding through a dense meadow is lovely, and it’s also where I saw my frame rate crater the hardest.
- GrassDensity: Ultra+ is very high. A midpoint around 2000 to 2400 keeps fields lush and gets back a real chunk of performance. Go much lower and the grass starts looking like a bad haircut.
- FoliageDistanceScale: Bring it from Ultra+ down to roughly High levels. You stop paying for tiny leaves on trees nobody is looking at.
- GrassDistanceScale: Same logic, shorter reach means less work.
If you stutter while galloping on Roach, grass and foliage streaming are the first suspects.
VRAM and Texture Streaming: Don’t Let It Spill
If your card has under 12 GB of VRAM, this section matters most. When textures overflow into system RAM, you get the nasty kind of stutter, the kind that makes you question your hardware purchases.
TextureMemoryBudget tells the engine how much VRAM to reserve for textures. Set it with headroom, because DX12 itself needs memory too. My starting points:
| Your VRAM | TextureMemoryBudget | Notes |
|---|---|---|
| 8 GB | 4000 | Leaves room for DX12 overhead |
| 10 to 12 GB | 6000 | Good balance with RT off or light |
| 16 GB and up | 8000+ | Test it, you have breathing room |
TextureStreamingMaxDistanceScale is the other one. Keep it moderate so the game doesn’t load high-res assets for stuff far outside your view.
Ray Tracing: Pick Your Battles
RT in this game is a CPU hog, partly because of how the acceleration structures get built. My approach:
- Keep RT Global Illumination. It’s the part that transforms the look of the game. Bounce lighting in forests and interiors is the whole reason to run RT.
- Drop RT reflections and RT shadows first if you need frames. You can win back 15 to 20 FPS in some scenes, and you keep the best part of the visuals.
- Running without RT? Make sure every RT option is off so the engine isn’t doing background work for nothing.
HairWorks: Keep the Fur, Skip the Tax
HairWorks still looks great on wolves and Geralt’s mane, and it still costs a lot. The cost comes mostly from the anti-aliasing on hair strands, which can go up to 8x by default.
Set HairWorksAALevel to 2 (or 0 if you’re desperate). The strands still look dense and detailed, and your frame rate stops flinching whenever a monster shows up.
My user.settings Template
This is the block I used as a base. Back up first, then edit the matching lines in your existing file. Don’t just paste the whole thing over your file. Different driver and game versions can have different keys, so if a line doesn’t exist in your file, skip it rather than forcing it in.
[Rendering]
CascadeShadowFadeTweak=0.000000
CascadeShadowDistanceScale0=1.000000
CascadeShadowDistanceScale1=1.000000
CascadeShadowDistanceScale2=1.500000
CascadeShadowDistanceScale3=1.500000
CascadeShadowSize=2048
CascadeShadowQuality=2
MeshLODDistanceScale=1.200000
TextureMemoryBudget=4000
TextureStreamingMaxDistanceScale=1.000000
TextureStreamingCharacterDistanceScale=1.500000
MaxTerrainLevel=4
DynamicGarbageGroupInFrustumCountScale=1.000000
DetailLevel=3
DecalsLimit=100
DecalsChance=1.000000
CharacterShadowsLimit=5
ShadowsGridSize=1024
ssao=1
ssr=0
AllowClothSimulationOnGpu=true
CutsceneSupersampling=0
[Foliage]
FoliageDistanceScale=1.000000
GrassDensity=2000
GrassDistanceScale=1.000000
GrassRingSize=16777216
FoliageShadowDistanceScale=36.000000
[Budget]
TerrainDescriptorSetSize=20971520
TerrainIndexBufferPerFrame=2097152
TerrainVertexBufferPerFrame=4194304
[HairWorks]
HairWorksAALevel=2
HairworksPreset=0
HairWorksGlobalStrandScale=1.000000Why These Lines Matter
- ssr=0: Screen space reflections get expensive around water and wet streets. Novigrad in the rain and the swamps of Velen are where you’ll feel the savings. Puddles lose some shine, and I’m fine with that trade.
- AllowClothSimulationOnGpu=true: Moves cloth physics (capes, banners, armor flaps) off the CPU. Fewer frame-time spikes in crowded scenes.
- CutsceneSupersampling=0: Cutscenes shouldn’t run worse than combat. This stops the engine from cranking extreme AA during dialogue close-ups.
- TextureMemoryBudget=4000: Aimed at 8 GB cards, adjust using the table above.
Test one block at a time. Change shadows, play ten minutes, then change foliage. If you change twenty things at once and something breaks, you won’t know which line did it.
Windows-Side Fixes (Where Stutter Often Hides)
Control Flow Guard
Many players on Steam and Reddit report that turning off Control Flow Guard for the game’s executable reduces DX12 micro-stutter. Treat it as a worth-trying fix rather than a guaranteed cure, since results vary by system. CFG is a Windows security feature, so you’re trading a small layer of protection for a single offline game. For a single-player title, I’m comfortable with that.
How to do it:
- Search the Start menu for Exploit protection.
- Open the Program settings tab.
- Click Add program to customize, then Choose exact file path.
- Point it at
The Witcher 3 Wild Hunt\bin\x64_dx12\witcher3.exe. - Find Control Flow Guard (CFG), tick Override system settings, switch it to Off, and Apply.
If it does nothing for you, switch it back.
Upscaling and Frame Generation
The DX12 build supports modern upscalers, so use them.
- On 1440p and 4K, DLSS or FSR on Quality is the sweet spot. The image stays sharp and you gain a healthy chunk of frames.
- On an RTX 40-series or newer, DLSS Frame Generation is available. It’s a big boost for high-refresh screens, though it adds a bit of input latency, so I’d skip it if you’re already above 60 stable.
- Older cards and AMD users can look at community tools like Optiscaler or DLSS Enabler to inject frame generation. Those are third-party mods, so read the instructions, expect some jank, and keep your backups handy.
Clear the Shader Cache
After editing configs or updating GPU drivers, old compiled shaders can cause weird hitching. Open Windows Disk Cleanup, pick your system drive, tick DirectX Shader Cache, and clean it. Then launch the game and give it a few minutes to rebuild. The first session after clearing will stutter more than usual, and that’s expected, so don’t judge your results until the cache has rebuilt.
What You Should Realistically Expect
After all of this, here’s what I noticed on my own testing and what I’ve seen other players report:
- Average FPS goes up, with the size of the gain depending on your hardware and whether RT is on. Systems that were limited by shadows, grass, and RT see the biggest change.
- Frametimes get flatter. For me this was the real prize. The game feels smoother even when the average number doesn’t jump dramatically.
- The look stays intact. Textures stay sharp, the world still looks like the Next-Gen showpiece, and the stuff you cut is mostly stuff you only notice in screenshots.
Treat the percentages you see in other guides as best-case numbers at best. Your results will sit somewhere on a range, and the only way to know where is to test on your own machine.
How to Fix The Witcher 3 Remastered Locked at 30FPS on Steam Deck OLED (2026 Guide)
Final Thoughts
The Next-Gen update is a love letter to one of the best RPGs ever made, and the DX12 port has rough edges that no amount of love fixes. A few careful edits to two text files, a Windows tweak, and sensible use of upscaling get you most of the way to a version of the game that feels as good as it looks.
Back up your files, change things in small batches, and keep what works for your rig. Now go play, because somewhere out there a drowner is waiting, and Roach shouldn’t have to stutter on the way.








