NVIDIA announced GeForce Game Ready Driver 621.01 WHQL on October 20, 2026, and its headline feature is support for Microsoft’s Advanced Shader Delivery, which The Verge described as a new way to speed up PC games. That news sent a lot of players to the same question. If precompiled shaders now arrive with the game download, does the NVIDIA shader cache size setting still matter? It does, and this tutorial shows you how to set it, clear it, and move it in 13 steps.
You will need about 40 minutes and a Windows 11 PC with a GeForce RTX card. By the end you will have a cache size that fits your drive, a clean way to wipe stale shader files, a junction that parks the cache on a roomier SSD, and a small PowerShell tool that audits all of it on a schedule. Every step includes a command or a setting you can check, so you never have to take a guess on faith.
We covered the launch itself in our report on NVIDIA RTX getting Advanced Shader Delivery, so this guide stays practical. One honest caveat first: NVIDIA has not published a procedure written specifically for driver 621.01 that covers setting, clearing, or moving the conventional shader cache. The steps below rely on long-standing driver settings and folder locations, and each one tells you how to confirm it on your own machine before you trust it.
Don't miss new tech stories on Google
Add Tech Insider once in the Google app and our stories appear in your news suggestions.
What the NVIDIA Shader Cache Does and What Driver 621.01 Changed
A shader is a small program the GPU runs to draw pixels. Games ship them in a generic form, and your driver has to translate each one into machine code for your exact card. That translation costs time. Do it while a level loads and you get a progress bar. Do it mid-fight and you get a hitch. The NVIDIA shader cache stores the translated results on disk so the next launch skips the work.
The cache has a ceiling. When it fills, the driver discards older entries to make room, and any game whose shaders were discarded compiles them again. Players with big libraries hit this all the time. They play one title for a week, switch to another, and return to find the first one stuttering like a fresh install. Raising the NVIDIA shader cache size is the cheapest fix for that pattern, and it costs only disk space.
Driver 621.01 adds something different on top. According to NVIDIA, Advanced Shader Delivery is a Microsoft technology built on DirectX 12, Windows 11, and the Microsoft Agility SDK. Developers build a State Object Database, Microsoft’s cloud precompiles it, and the result is a Precompiled Shader Database matched to a specific GPU and driver. Microsoft’s own Game Development Kit guide to Advanced Shader Delivery walks through that pipeline for studios. A developer-facing note from October 21 adds that a generated database only works with the NVIDIA display driver that produced it.
Here is the part that matters for this tutorial. NVIDIA does not describe Advanced Shader Delivery as a replacement for the local shader cache, and Microsoft’s material does not claim that the old cache controls were removed. The two systems stack. The delivered database covers supported games at install time. Your local cache covers everything else, including every game that has not adopted the feature, and anything your driver compiles on top of a delivered database.
The supported list is short for now. Microsoft and NVIDIA name Call of Duty: Modern Warfare 4 and Gears of War: E-Day as the first titles. Microsoft says the feature works today for games installed through the Xbox app or the Microsoft Store, with the Epic Games Store and Steam listed as coming soon. If you play mostly on Steam, your local cache still does nearly all the work, which is exactly why tuning it pays off.
AMD users got a similar feature earlier in 2026, and we measured its effect in our piece on AMD’s Advanced Shader Delivery results on the RX 9070 XT. The lesson carried over to NVIDIA hardware. Precompiled shaders shorten the first launch, but a well-sized local cache keeps every later launch short too. Driver updates deserve a mention here as well. Because compiled shaders depend on the driver that built them, a driver jump gives you a cold cache for a while, and that is the moment a properly sized cache folder saves the most time.
Prerequisites and Versions You Need
Check these before you start. Most are quick, and the table lists the exact versions this guide was written against on October 24, 2026. Windows 11 version 26H2 reached general availability in September 2026 and is the newest release. Version 24H2 Home and Pro reached end of support on October 13, 2026, so Microsoft recommends moving to 26H2. Advanced Shader Delivery itself needs 24H2 or newer, which means 25H2 and 26H2 both qualify.
| Requirement | Version or detail | Why it matters |
|---|---|---|
| Windows 11 | 26H2 (current), 25H2 also fine, 24H2 minimum for Advanced Shader Delivery | 24H2 Home and Pro stopped receiving updates on October 13, 2026 |
| NVIDIA driver | GeForce Game Ready 621.01 WHQL or newer | First driver with Advanced Shader Delivery support on NVIDIA hardware |
| GPU | Any GeForce RTX card (the RTX 5090 is the current desktop flagship) | Microsoft lists all RTX GPUs and RTX Spark as supported |
| NVIDIA App | Current release from GeForce.com | Installs the driver and exposes graphics settings |
| PowerShell | 5.1 (built into Windows 11) or 7.x | Runs the audit and cleanup tool in the project section |
| Display Driver Uninstaller | Newest build from Wagnardsoft, freeware (optional) | Only for the clean reinstall in Step 4 |
| Free disk space | At least 20 GB free on the system drive | Room for a larger cache and temporary copies |
| Test game | Modern Warfare 4 or Gears of War: E-Day (any DirectX 12 title works for cache tests) | Needed to see Advanced Shader Delivery in action |
On the display driver tool, Wagnardsoft’s download page listed version 18.1.6.1 in a post dated September 27, and later coverage reports 18.1.6.2 as the newest build. Download whatever the official Wagnardsoft site shows as latest on the day you read this. You only need it for the optional clean reinstall, and Step 4 explains when that is worth the effort.
You also need local administrator rights for a few steps, a second drive if you plan to move the cache in Steps 10 and 11, and about ten minutes of patience while a game rebuilds its shaders during the tests. Close the NVIDIA App, game launchers, and any overlay software before the cleanup steps. They hold files open and cause confusing access errors later.
Finally, decide what you are optimizing for. If your goal is fewer stutters in a handful of games, a bigger cache is the whole answer. If your goal is reclaiming space on a small SSD, you will lean on the clearing steps. If you are chasing a mysterious stutter after a driver change, you need the clear-and-rebuild test in Steps 8 and 11. Knowing which of these you are doing keeps you from wiping a cache that was working fine.
Where Each Shader Cache Lives on Windows 11
Most guides talk about “the” shader cache as if one folder holds everything. In practice several layers exist, and clearing the wrong one wastes your afternoon. The table below maps each layer, where it usually sits, and who controls it. Locations vary slightly between driver generations, which is why Step 2 has you discover them with a script instead of trusting a list.
| Layer | Typical location | Controlled by | Safe to clear? |
|---|---|---|---|
| NVIDIA DirectX cache | %LOCALAPPDATA%\NVIDIA\DXCache | NVIDIA driver, size set in graphics settings | Yes, rebuilds on next launch |
| NVIDIA OpenGL and Vulkan cache | %LOCALAPPDATA%\NVIDIA\GLCache | NVIDIA driver | Yes, rebuilds on next launch |
| Per-driver-version cache | %USERPROFILE%\AppData\LocalLow\NVIDIA\PerDriverVersion | NVIDIA driver, seen on newer installs | Yes, rebuilds on next launch |
| Legacy NVIDIA cache | %PROGRAMDATA%\NVIDIA Corporation\NV_Cache | Older driver generations | Yes, needs admin rights |
| Windows DirectX cache | %LOCALAPPDATA%\D3DSCache | Windows, listed as DirectX Shader Cache in Storage settings | Yes, rebuilds on next launch |
| Launcher caches | Inside each launcher or game folder, such as Steam’s shader pre-caching | The launcher | Only through the launcher’s own setting |
| Advanced Shader Delivery database | Arrives with the game download | Xbox app or Microsoft Store | Leave it alone, reinstall the game to refresh it |
Two details trip people up. First, the cache folders contain files only, and the driver recreates them when it needs them. You should delete the contents and keep the folders, particularly if a junction is involved later. Second, the Advanced Shader Delivery database is not something you manage by hand. It travels with the game, and NVIDIA says it is matched to your hardware and driver. If a supported game stutters after a driver update, the sensible move is to let the store app refresh the game, not to delete files from the install folder.
You will also hear advice about environment variables that redirect the cache. Those apply to the Linux driver. On Windows, the supported controls are the size setting and the folders themselves, and anything beyond that, such as the junction in Step 10, is a filesystem trick that NVIDIA does not document. We flag it as unsupported again when we get there, because it deserves the warning.
Steps 1 to 3: Check Your Build, Baseline the Cache, Make a Restore Point
Step 1: Confirm your Windows 11 build and your current driver. Open Windows Terminal or PowerShell and run the commands below. The first line prints your Windows release and build number. The second asks Windows for the video controller’s driver string. The third asks the NVIDIA tool for the version in the format NVIDIA uses on its download pages.
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsBuildNumber
Get-CimInstance Win32_VideoController |
Where-Object Name -like '*NVIDIA*' |
Select-Object Name, DriverVersion
nvidia-smi --query-gpu=name,driver_version --format=csv
Windows reports driver versions in a long Microsoft format, so trust the nvidia-smi line for the number that matches NVIDIA’s release notes. If it prints 621.01 or higher you already have the Advanced Shader Delivery driver. If your Windows version reads 24H2 or lower, plan an upgrade to 26H2 through Windows Update before you test the delivery feature, because 24H2 Home and Pro no longer receive security fixes.
WindowsProductName WindowsVersion OsBuildNumber
------------------ -------------- -------------
Windows 11 Pro 26H2 26300
name, driver_version
NVIDIA GeForce RTX 5070 Ti, 621.01
That block is sample output, and your GPU name and build number will differ. What you want to see is a version field that reads 621.01 or later. The nvidia-smi tool installs alongside the driver, so a “command not found” error here usually means the driver is missing or the tool is not on your path.
Step 2: Record a baseline of every cache folder. You cannot judge a change without a before picture. This short loop checks each known location, skips the ones that do not exist on your machine, and prints the size in megabytes. Run it now and save the output somewhere handy. You will compare against it in Step 7.
$paths = @(
"$env:LOCALAPPDATA\NVIDIA\DXCache",
"$env:LOCALAPPDATA\NVIDIA\GLCache",
"$env:USERPROFILE\AppData\LocalLow\NVIDIA\PerDriverVersion",
"$env:ProgramData\NVIDIA Corporation\NV_Cache",
"$env:LOCALAPPDATA\D3DSCache"
)
foreach ($p in $paths) {
if (Test-Path -LiteralPath $p) {
$bytes = (Get-ChildItem -LiteralPath $p -Recurse -File -Force -ErrorAction SilentlyContinue |
Measure-Object Length -Sum).Sum
'{0,-70} {1,10:n1} MB' -f $p, ($bytes / 1MB)
} else {
'{0,-70} not present' -f $p
}
}
Expect at least one or two folders to be missing. NVIDIA moved files around between driver generations, and a machine that never ran an OpenGL game may have no GLCache folder at all. A missing folder is not a problem. A folder at zero megabytes on a PC you game on every day is more interesting, and it usually means the cache is disabled or the size setting is too small.
Step 3: Create a restore point and check free space. Shader caches are disposable, so the restore point is cheap insurance for the settings and driver changes rather than for the cache itself. Run PowerShell as administrator for this one. If System Protection is off for your system drive, Windows will refuse, and you can turn it on from System Properties first.
Checkpoint-Computer -Description "Before shader cache changes" -RestorePointType MODIFY_SETTINGS
Get-PSDrive -PSProvider FileSystem |
Select-Object Name, @{n='UsedGB';e={[math]::Round($_.Used/1GB,1)}}, @{n='FreeGB';e={[math]::Round($_.Free/1GB,1)}}
Look at the free space column. If your system drive has under 20 GB free, deal with that first. A bloated cache is rarely the real culprit on a full drive, and tools that hunt down hidden junk files and leftover installers often reclaim more than any cache trim. Windows rate-limits restore points to one per day by default, so if the command prints a warning about frequency, you already have a recent one and can carry on.
Steps 4 and 5: Install Driver 621.01 and Pick a Shader Cache Size
Step 4: Install or update to 621.01
NVIDIA says you can download the 621.01 WHQL driver through the NVIDIA App or from GeForce.com. In the app, open the Drivers tab and install from there. If you prefer the manual route, grab the package for your GPU, desktop or notebook, from NVIDIA’s driver site. Reboot when the installer finishes, then check the version in the app or in the NVIDIA Control Panel‘s System Information window. It should read 621.01.
Should you do a clean install? For a routine update from the previous release, the installer’s own custom option labeled as a clean installation is usually enough. Reach for Display Driver Uninstaller when you are swapping from another GPU vendor, chasing crashes after several stacked updates, or hunting a stutter that survives a cache wipe. Our step-by-step DDU guide covers the Safe Mode procedure, and it is worth reading before you try it for the first time. Neither Microsoft nor NVIDIA lists DDU as a requirement for Advanced Shader Delivery, so skip it if nothing is wrong.
A note on timing. Driver 621.01 shipped before several games it prepares for. Cyberpunk 2077’s update with DLSS 4.5 was scheduled for October 22, Modern Warfare 4 launched October 23, Phantom Blade Zero follows on October 28, and Crimson Desert Enhanced on October 29. Installing the driver does not add those game features by itself. It only gets your PC ready, and each new launch will build fresh shaders in your cache the first time you play.
Step 5: Set the NVIDIA shader cache size
Right-click the desktop and open NVIDIA Control Panel. If it is missing from the menu, install it from the Microsoft Store, since recent drivers do not always bundle it. Go to Manage 3D settings, choose the Global Settings tab, and find the Shader Cache Size entry. The dropdown offers Driver Default, Disabled, a ladder of fixed caps, and Unlimited. Pick a value, click Apply, and close the window.
Recent NVIDIA App builds expose the same setting under Graphics and Global Settings. Layouts shift between releases, so use whichever interface shows the option on your machine. Some users report that the entry is absent on their install. The troubleshooting list later in this guide covers that case.
Which value? The honest answer depends on how many games you rotate through and how much room you have. The table gives starting points. These are rules of thumb from our own testing habits, not NVIDIA recommendations, so adjust them after you see how fast your cache actually grows in Step 7.
| Your situation | Starting setting | Reasoning |
|---|---|---|
| Small SSD, one or two games at a time | Driver Default | The default is tuned for exactly this case and wastes no space |
| Mid-size SSD, five to ten games in rotation | 10 GB cap | Stops older games from being evicted every time you try a new one |
| Large NVMe, big library, frequent switching | 100 GB cap | Gives every game room, and the cap still protects the drive |
| Dedicated games drive with lots of headroom | Unlimited | Never evicts, but you must audit growth (Steps 7 and 13) |
| Debugging a stutter | Disabled for one test, then restore your pick | Rules the cache in or out as the cause |
Resist the urge to choose Unlimited on a shared system drive. It sounds free, but a cache that grows without a ceiling can quietly eat tens of gigabytes after a few months of heavy gaming. If you do choose it, schedule the audit from Step 13 so the growth never surprises you.
Steps 6 and 7: Verify the Setting and Measure Cache Growth
Step 6: Confirm the setting survived. Reboot once, reopen the same panel, and check that your value is still selected. Driver installs and Windows feature updates have been known to reset graphics settings, which is why verification belongs in the routine. If the value reverted, apply it again and reboot a second time. A setting that reverts twice points at a profile or overlay tool rewriting it, and you should close those tools and retest.
The panel only tells you what you asked for. To see what the driver actually does, you watch the folders. That is Step 7, and it is where the baseline from Step 2 pays off. Launch a DirectX 12 game you have not played recently, play for fifteen minutes, quit it fully, then rerun the folder-size loop from Step 2.
Step 7: Measure growth after real play. A healthy result shows one or more folders grew by a few hundred megabytes. Your own numbers depend on the game, and a title with a huge shader library can add far more than a small indie game. If nothing grew at all, the game may use its own cache, or the driver may be disabled for caching by a per-game profile. Check the profile under Manage 3D settings, then Program Settings, for an override on that game.
Path Size
---- ----
C:\Users\you\AppData\Local\NVIDIA\DXCache 412.6 MB
C:\Users\you\AppData\Local\NVIDIA\GLCache 18.2 MB
C:\Users\you\AppData\LocalLow\NVIDIA\PerDriverVersion not present
C:\ProgramData\NVIDIA Corporation\NV_Cache not present
C:\Users\you\AppData\Local\D3DSCache 146.9 MB
Again, that block is illustrative. The shape matters more than the figures. Growth in DXCache means the driver is storing DirectX shaders under your new setting. Growth in D3DSCache means Windows is keeping its own copy too, which is normal. Two caches filling at once is not duplication you need to fix, since each layer serves a different part of the graphics stack.
Now run a simple stress pass to confirm the card behaves with the new driver. A short run through our guide on how to stress test a GPU and CPU catches unstable overclocks and thermal problems that masquerade as shader stutter. Many players blame the cache for hitching that is really a clock or power issue, so ruling it out now saves hours of cache fiddling later.
Steps 8 and 9: Clear the NVIDIA and Windows Shader Caches Safely
Clearing is the step people reach for first, and it is also the one that most often makes things worse. A wiped cache means every game compiles from scratch again, so you trade a hypothetical problem for a guaranteed stutter session. Clear only when you have a reason. Good reasons include a driver jump followed by odd behavior, a game that crashes on launch after an update, a disk you need to shrink, or a new graphics card in an old install. If you just finished an upgrade to a new graphics card, a wipe is routine housekeeping because the old compiled shaders were built for different hardware.
Step 8: Clear the NVIDIA caches and the Windows DirectX cache with a script. Quit every game and launcher first. The script below deletes the contents of each folder and leaves the folders in place. It skips locations that do not exist and silences errors on files that Windows has locked, so a stubborn file never aborts the whole run.
$targets = @(
"$env:LOCALAPPDATA\NVIDIA\DXCache",
"$env:LOCALAPPDATA\NVIDIA\GLCache",
"$env:LOCALAPPDATA\D3DSCache"
)
foreach ($t in $targets) {
if (Test-Path -LiteralPath $t) {
Get-ChildItem -LiteralPath $t -Force -ErrorAction SilentlyContinue |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
"Cleared contents of $t"
} else {
"Skipped $t (not present)"
}
}
Notice what the script avoids. It never deletes the folder itself, which matters if a junction sits there from Step 10. It never touches the Advanced Shader Delivery database inside a game install. And it leaves the per-driver-version and legacy ProgramData locations alone by default, because those need administrator rights and rarely hold much. If you want them gone too, add them to the list and run PowerShell elevated.
Rerun the Step 2 loop afterward. Every folder should read close to zero. A few kilobytes of leftovers are normal, since the driver sometimes writes a small index file the moment it loads. If one folder still holds hundreds of megabytes, a process has it open. Check for a background launcher or an overlay, close it, and run the script again.
Step 9: Clear the Windows copy through Settings. Open Settings, go to System, then Storage, then Temporary files. Windows scans and lists categories, and one of them is named DirectX Shader Cache. Tick it, leave the other boxes alone unless you actually want them cleared, and select Remove files. This route is the one Microsoft supports, so it is the better choice on a work PC where you do not want to script file deletions.
Launchers keep their own caches as well. Steam, for one, has a shader pre-caching option under its Downloads settings that controls whether it downloads precompiled shaders for supported games. Toggling it changes what Steam fetches, so treat it as a setting and not a cleanup action. If a single game keeps stuttering after both clears, verify its files through the launcher and let it rebuild. Do that before you reach for anything more drastic.
Steps 10 and 11: Move the Shader Cache to Another Drive With a Junction
Many players run a small system SSD and a big games drive. The shader cache lives on the system drive by default, and a generous size cap can strain it. NVIDIA’s graphics settings offer a size but no location. The workaround is an NTFS junction, which makes Windows treat one folder as a doorway to another. The driver keeps writing to the original path while the files land on your roomy drive.
Read this warning before you start. NVIDIA does not document or support this trick for the Windows driver. It works for many people because the driver simply follows the path, but a driver update or a failed disk could break it. The cache is disposable, so the worst outcome is a cold cache and a few minutes of repair. Never point the junction at a removable drive or a network share. If the target disappears at boot, games can fail at launch.
Step 10: Create the junction. Close every game and launcher, then open Command Prompt, not PowerShell, because the mklink command is a Command Prompt built-in. Replace D:\ShaderCache with a folder on your own fast drive. The sequence below moves the existing cache, removes the now-empty original folder, and creates the junction in its place.
mkdir "D:\ShaderCache"
robocopy "%LOCALAPPDATA%\NVIDIA\DXCache" "D:\ShaderCache\DXCache" /E /MOVE /R:1 /W:1
if exist "%LOCALAPPDATA%\NVIDIA\DXCache" rmdir "%LOCALAPPDATA%\NVIDIA\DXCache"
mklink /J "%LOCALAPPDATA%\NVIDIA\DXCache" "D:\ShaderCache\DXCache"
The rmdir command without a recursive flag only removes empty folders, which is exactly the safety you want. If it refuses, files were left behind, so rerun the robocopy line and read its error summary. Success prints a line saying a junction was created, with an arrow between the two paths. Repeat the same four lines for GLCache if your Step 2 baseline showed meaningful data there, changing both folder names.
Step 11: Verify the junction and watch it work. Back in PowerShell, ask Windows what kind of item the original path now is. A junction reports its type and its target. Then launch a game for a few minutes and confirm that new files appear on the D: drive and that the C: folder stays tiny.
Get-Item "$env:LOCALAPPDATA\NVIDIA\DXCache" | Select-Object FullName, LinkType, Target
Get-ChildItem "D:\ShaderCache\DXCache" -Recurse -File |
Sort-Object LastWriteTime -Descending |
Select-Object -First 5 Name, Length, LastWriteTime
FullName LinkType Target
-------- -------- ------
C:\Users\you\AppData\Local\NVIDIA\DXCache Junction {D:\ShaderCache\DXCache}
To undo the move, delete only the junction with rmdir "%LOCALAPPDATA%\NVIDIA\DXCache" from Command Prompt, which removes the link and leaves the target untouched, then copy the files back or let the driver rebuild. Re-check the junction after every driver update. If the installer recreated a plain folder over it, you will see an empty LinkType and a small cache on C:, and you can simply repeat Step 10.
Step 12: Test Cold and Warm Launches, Then Check Advanced Shader Delivery
Now prove the setup works. The test is simple. Launch a game right after a clear, which is a cold cache, note how long it takes to reach a playable state, quit, relaunch, and compare. The warm run should be clearly faster, and in-game hitching during the first few minutes should drop. If both runs feel identical, the game either does not depend on the driver cache or keeps its own.
A stopwatch works fine. If you prefer something repeatable, this script launches an executable and times how long it takes to show a window. That is a rough proxy, because many games open a window long before shaders finish compiling. Treat it as a floor for load time and use your own eyes and the in-game frame time graph for the real judgment.
param(
[Parameter(Mandatory)][string]$Exe,
[string]$LaunchArgs = ''
)
$sw = [System.Diagnostics.Stopwatch]::StartNew()
$p = Start-Process -FilePath $Exe -ArgumentList $LaunchArgs -PassThru
while (-not $p.HasExited) {
$p.Refresh()
if ($p.MainWindowHandle -ne 0) { break }
Start-Sleep -Milliseconds 250
}
$sw.Stop()
'{0} showed a window after {1:n1} seconds' -f $p.ProcessName, $sw.Elapsed.TotalSeconds
Checking Advanced Shader Delivery on a supported game
Advanced Shader Delivery gives you a different kind of test. Install Modern Warfare 4 or Gears of War: E-Day through the Xbox app or Microsoft Store, with driver 621.01 and Windows 11 24H2 or newer in place. Activision’s PC listing calls for an SSD and 115 GB of storage for Modern Warfare 4, so clear room first. The game launched on October 23, after campaign early access went live on October 16.
NVIDIA says the feature lets a supported game skip the usual shader-compilation screen. So the sign of success is an absence. Your first launch should drop you into the menu without a long compiling bar, or with a much shorter one. TechSpot’s coverage of Microsoft’s shader compilation fix explains the idea in plain terms, and PCWorld framed it around shader stutter. Neither promises identical results on every machine, and neither should you.
If you see the long compile bar anyway, work through the likely causes in order. Confirm the game came from the Xbox app or Microsoft Store and not Steam or Epic, since those storefronts are still listed as coming soon. Confirm the driver reads 621.01 or higher. Confirm Windows is 24H2 or newer. Then let the store app finish any pending game update, because the delivered database belongs to the game’s download. Only after those four checks should you suspect your local cache.
Step 13 and the Complete Working Project: One PowerShell Tool for Audit, Clear, Move, and Log
The first twelve steps work, but they live in your head and your clipboard. Step 13 folds them into a single script you can rerun any time. It has four actions. Audit reports every cache’s size and whether it is a junction. Clear empties the folders and logs how much space came back. Move builds the junctions from Step 10 with checks along the way. Restore reverses them. Every action appends a row to a CSV log, so a month from now you can see exactly how your cache grew.
Save the script as C:\Tools\ShaderCacheTool.ps1. It needs no modules and runs on the Windows PowerShell 5.1 that ships with Windows 11 as well as on PowerShell 7. The Windows DirectX cache is skipped unless you pass the switch for it, which keeps casual runs conservative. Nothing in it touches game install folders, so the Advanced Shader Delivery database stays safe.
#Requires -Version 5.1
param(
[Parameter(Mandatory)][ValidateSet('Audit','Clear','Move','Restore')][string]$Action,
[string]$Target = 'D:\ShaderCache',
[switch]$IncludeWindowsCache,
[string]$LogPath = "$env:USERPROFILE\ShaderCacheLog.csv"
)
$ErrorActionPreference = 'Stop'
$Caches = @(
[pscustomobject]@{ Name='NVIDIA DXCache'; Path="$env:LOCALAPPDATA\NVIDIA\DXCache"; Movable=$true; Windows=$false },
[pscustomobject]@{ Name='NVIDIA GLCache'; Path="$env:LOCALAPPDATA\NVIDIA\GLCache"; Movable=$true; Windows=$false },
[pscustomobject]@{ Name='NVIDIA PerDriver'; Path="$env:USERPROFILE\AppData\LocalLow\NVIDIA\PerDriverVersion"; Movable=$false; Windows=$false },
[pscustomobject]@{ Name='NVIDIA NV_Cache'; Path="$env:ProgramData\NVIDIA Corporation\NV_Cache"; Movable=$false; Windows=$false },
[pscustomobject]@{ Name='Windows D3DSCache'; Path="$env:LOCALAPPDATA\D3DSCache"; Movable=$false; Windows=$true }
)
$Active = $Caches | Where-Object { (-not $_.Windows) -or $IncludeWindowsCache }
function Get-SizeMB([string]$Path) {
if (-not (Test-Path -LiteralPath $Path)) { return $null }
$sum = (Get-ChildItem -LiteralPath $Path -Recurse -File -Force -ErrorAction SilentlyContinue |
Measure-Object -Property Length -Sum).Sum
if (-not $sum) { $sum = 0 }
[math]::Round($sum / 1MB, 1)
}
function Get-LinkType([string]$Path) {
$item = Get-Item -LiteralPath $Path -Force -ErrorAction SilentlyContinue
if ($item) { return $item.LinkType }
return $null
}
function Write-Log([string]$What, [string]$Name, [string]$Detail) {
[pscustomobject]@{ Time = (Get-Date -Format 's'); Action = $What; Name = $Name; Detail = $Detail } |
Export-Csv -Path $LogPath -Append -NoTypeInformation
}
function Invoke-Audit {
foreach ($c in $Active) {
$size = Get-SizeMB $c.Path
[pscustomobject]@{ Name = $c.Name; SizeMB = $size; Link = (Get-LinkType $c.Path); Path = $c.Path }
Write-Log 'Audit' $c.Name ("{0} MB" -f $size)
}
}
function Invoke-Clear {
foreach ($c in $Active) {
if (-not (Test-Path -LiteralPath $c.Path)) { continue }
$before = Get-SizeMB $c.Path
Get-ChildItem -LiteralPath $c.Path -Force -ErrorAction SilentlyContinue |
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue
$after = Get-SizeMB $c.Path
Write-Host ("Cleared {0}: {1} MB to {2} MB" -f $c.Name, $before, $after)
Write-Log 'Clear' $c.Name ("{0} MB to {1} MB" -f $before, $after)
}
}
function Invoke-Move {
if (-not (Test-Path -LiteralPath (Split-Path $Target -Qualifier))) {
throw "The drive for $Target was not found."
}
foreach ($c in ($Caches | Where-Object { $_.Movable })) {
if ((Get-LinkType $c.Path) -eq 'Junction') {
Write-Host "$($c.Name) is already a junction, skipping."
continue
}
$dest = Join-Path $Target (Split-Path $c.Path -Leaf)
New-Item -ItemType Directory -Path $dest -Force | Out-Null
New-Item -ItemType Directory -Path (Split-Path $c.Path) -Force | Out-Null
if (Test-Path -LiteralPath $c.Path) {
robocopy $c.Path $dest /E /MOVE /R:1 /W:1 /NFL /NDL /NJH /NJS | Out-Null
if ($LASTEXITCODE -ge 8) { throw "robocopy failed for $($c.Name) with exit code $LASTEXITCODE." }
if (Test-Path -LiteralPath $c.Path) {
if (Get-ChildItem -LiteralPath $c.Path -Force) {
throw "Files remain in $($c.Path). Close games and launchers, then retry."
}
Remove-Item -LiteralPath $c.Path -Force
}
}
New-Item -ItemType Junction -Path $c.Path -Target $dest | Out-Null
Write-Host "Moved $($c.Name) to $dest"
Write-Log 'Move' $c.Name $dest
}
}
function Invoke-Restore {
foreach ($c in ($Caches | Where-Object { $_.Movable })) {
if ((Get-LinkType $c.Path) -ne 'Junction') { continue }
$source = (Get-Item -LiteralPath $c.Path -Force).Target | Select-Object -First 1
cmd /c rmdir "$($c.Path)" | Out-Null
New-Item -ItemType Directory -Path $c.Path -Force | Out-Null
robocopy $source $c.Path /E /MOVE /R:1 /W:1 /NFL /NDL /NJH /NJS | Out-Null
if ($LASTEXITCODE -ge 8) { throw "robocopy failed for $($c.Name) with exit code $LASTEXITCODE." }
Write-Host "Restored $($c.Name) to $($c.Path)"
Write-Log 'Restore' $c.Name $c.Path
}
}
switch ($Action) {
'Audit' { Invoke-Audit | Format-Table -AutoSize }
'Clear' { Invoke-Clear }
'Move' { Invoke-Move }
'Restore' { Invoke-Restore }
}
Run it from an ordinary PowerShell window. If Windows blocks scripts, allow them for the current session only with Set-ExecutionPolicy -Scope Process Bypass, which expires when you close the window and changes nothing permanent. Then call the tool with the action you want.
Set-ExecutionPolicy -Scope Process Bypass
C:\Tools\ShaderCacheTool.ps1 -Action Audit -IncludeWindowsCache
C:\Tools\ShaderCacheTool.ps1 -Action Clear
C:\Tools\ShaderCacheTool.ps1 -Action Move -Target 'D:\ShaderCache'
C:\Tools\ShaderCacheTool.ps1 -Action Restore
Name SizeMB Link Path
---- ------ ---- ----
NVIDIA DXCache 412.6 Junction C:\Users\you\AppData\Local\NVIDIA\DXCache
NVIDIA GLCache 18.2 C:\Users\you\AppData\Local\NVIDIA\GLCache
NVIDIA PerDriver C:\Users\you\AppData\LocalLow\NVIDIA\PerDriverVersion
NVIDIA NV_Cache C:\ProgramData\NVIDIA Corporation\NV_Cache
Windows D3DSCache 146.9 C:\Users\you\AppData\Local\D3DSCache
That is sample output, and the numbers will differ on your PC. Read the Link column to see which caches sit behind a junction, and read the blank SizeMB cells as folders your driver generation does not use. To make the log build itself, register a weekly task that runs the audit. The task below fires every Sunday morning and appends a row for each cache to the CSV, giving you a growth curve with no effort.
$action = New-ScheduledTaskAction -Execute 'powershell.exe' `
-Argument '-NoProfile -ExecutionPolicy Bypass -File "C:\Tools\ShaderCacheTool.ps1" -Action Audit -IncludeWindowsCache'
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 9am
Register-ScheduledTask -TaskName 'ShaderCacheAudit' -Action $action -Trigger $trigger `
-Description 'Weekly shader cache size log'
Open the CSV in a spreadsheet after a few weeks. If the DXCache line climbs steadily until it flattens at your chosen cap, the setting is behaving. If it keeps climbing past the cap, revisit the setting from Step 5. If it never grows, your games may be using caches the driver does not manage. Either result teaches you something, and that is the real payoff of logging.
Common Pitfalls to Avoid
- Clearing the cache on a schedule for no reason. A weekly wipe guarantees recurring stutter. Clear after a driver or hardware change, or when troubleshooting, and leave it alone otherwise.
- Deleting the folders instead of their contents. If a junction sits at that path, removing the folder with the wrong command can break the link or, with some tools, delete the target files. Empty the contents and keep the folder.
- Choosing Unlimited on a small system drive. The cache keeps every entry it ever wrote. Pair Unlimited with the weekly audit, or pick a fixed cap instead.
- Pointing the junction at a removable or network drive. If that drive is not ready when Windows starts, games lose their cache path and may fail on launch.
- Treating Advanced Shader Delivery as a cache replacement. NVIDIA does not present it that way. It helps supported games on first launch, while your local cache still serves every other title.
- Skipping verification after a driver update. Updates can reset the size setting or recreate a plain folder over your junction. Recheck both every time. It takes one minute and prevents a week of confusion.
- Blaming shaders for hitching caused by hardware. Unstable overclocks, thermal throttling, and a failing drive all look like stutter. If you recently changed cards, recheck the seating and power cables using our guide to installing a GPU in 13 steps. If you did not, run a stress pass.
If you remember only one of these, make it the first. Newcomers treat the clear button as a performance tool, and it is the opposite. It is a repair tool, and like any repair it costs you something up front. The cache exists because compiling is expensive. Throwing it away on a hunch means paying that cost again for every game you own.
Troubleshooting: 12 Problems and Fixes
- The Shader Cache Size option is missing. Install NVIDIA Control Panel from the Microsoft Store, since it is not always bundled. Make sure you are on the Global Settings tab and not Program Settings. Users have reported the entry absent on some installs, and a clean driver install, or the NVIDIA App’s graphics settings, often brings it back.
- The setting reverts after a reboot or update. Reapply it and reboot twice. If it reverts again, close overlays and profile tools that rewrite driver settings, then retest. Windows feature updates can also reset graphics options, so recheck after any big update.
- The cache folder never grows. The game may keep its own cache, or a per-game profile may override the global setting. Check Program Settings for that title. Also confirm you are looking at the right folder, because newer drivers may use the per-driver-version location.
- Access denied while clearing. A launcher, overlay, or the game itself still holds files open. Quit them fully, check the system tray, and rerun the clear. A reboot before clearing solves most stubborn cases.
- The junction vanished after a driver update. The installer recreated a plain folder. Run the Audit action, see the empty Link column, and run Move again. Your old files on the other drive are still there and will be reused.
- Games stutter more right after clearing. That is expected. The driver is rebuilding shaders. Play normally for a session or two before judging. If the stutter persists after a few launches, the cache is not the cause.
- The first launch after a driver update is slow. Compiled shaders depend on the driver that built them, so a new driver starts cold for most games. Leave the cache in place and the second launch should recover.
- A supported game still shows a long compile bar. Check the four basics in order: the game came from the Xbox app or Microsoft Store, the driver reads 621.01 or higher, Windows is 24H2 or newer, and the store app finished updating the game. Steam and Epic support is listed as coming soon.
- Vulkan crashes or device-lost errors on an RTX 5070 Ti. One report on NVIDIA’s developer forums describes a device-lost fault with drivers 617.42 and 621.01 on that card. It is a single user report, not a confirmed NVIDIA defect, so try a clean install and check the thread before blaming your cache.
- Games fail to launch after moving the cache. The target drive may be offline or slow to mount at startup. Run the Restore action to put the cache back on the system drive, then fix the drive issue before trying the junction again.
- The disk is still full with a cache cap set. The cap governs the NVIDIA driver cache only. The Windows DirectX cache, launcher caches, and the games themselves use space too. Run Audit with the Windows switch and look at the biggest folder first.
- mklink says the file already exists. The original folder was not removed. Confirm the move finished, check that the folder is empty, delete it with
rmdir, and run the link command again.
If none of these match your symptoms, work backwards. Restore the junction, set the cache to Driver Default, clear everything once, reboot, and test a single game. A known-clean baseline makes every later change easier to read. Add one change at a time and test between each, so you always know which change helped or hurt.
Advanced Tips for Power Users
Read your log like a growth chart. After a few weeks of the scheduled audit, filter the CSV to a single cache and watch its trend. A one-line command does it. Steady growth that levels off means your cap fits. A sawtooth pattern, rising then dropping, means the driver is evicting and your cap is too small for the number of games you rotate through.
Import-Csv "$env:USERPROFILE\ShaderCacheLog.csv" |
Where-Object { $_.Action -eq 'Audit' -and $_.Name -eq 'NVIDIA DXCache' } |
Select-Object Time, Detail
Use Disabled as a diagnostic, not a setting. If you suspect a corrupt cache entry, set the option to Disabled for one test session. If the problem vanishes, clear the cache and restore your preferred size. If it persists, the cache was never the cause, and you can stop chasing it. Never leave caching off for daily play, because every launch would compile from scratch.
Put the cache on fast storage. Cache reads happen during loading and traversal, so a slow disk can eat the benefit. An NVMe drive makes a good target for the junction. A spinning hard drive does not. If your games drive is a hard disk, keep the cache on the system SSD and spend the effort on trimming it instead.
Time your driver updates. A new driver means a cold cache, so avoid updating the night before a launch you care about. Install it a few days ahead and play a short session in each of your main games to warm things up. When you do update, our guide on how to update GPU drivers covers rollback options, and the hardware section of this site tracks driver releases as they land through our hardware coverage.
Watch for storefront expansion. Microsoft says Epic Games Store and Steam support for Advanced Shader Delivery is coming soon, but it has not given a date. When it arrives, the local cache will matter less for supported Steam games on first launch. Until then, keep your cap generous if Steam is your main launcher, and recheck the official announcements every few weeks.
FAQ: NVIDIA Shader Cache Size and Advanced Shader Delivery
Does Advanced Shader Delivery replace the NVIDIA shader cache?
No. NVIDIA and Microsoft describe it as a way to deliver precompiled shaders with supported game downloads, and neither presents it as a replacement for the local driver cache. Your cache still handles every game that has not adopted the feature.
Which driver and Windows version do I need for it?
NVIDIA driver 621.01 or newer and Windows 11 version 24H2 or newer. Microsoft lists all RTX GPUs and RTX Spark as supported. Windows 11 26H2 is the current release, and 24H2 Home and Pro stopped receiving updates on October 13, 2026.
Is it safe to delete the NVIDIA shader cache?
Yes, the files are disposable and the driver rebuilds them. The cost is stutter and longer loads while it does. Delete the contents of the folders, not the folders, and avoid the Advanced Shader Delivery files inside game installs.
What NVIDIA shader cache size should I choose?
Driver Default suits a small SSD and a couple of games. A 10 GB cap fits a mid-size SSD with a rotating library, and a 100 GB cap fits a large NVMe drive. Choose Unlimited only if you audit growth. These are our rules of thumb, not NVIDIA guidance.
Does Advanced Shader Delivery work for games on Steam?
Not yet according to Microsoft. It works today for games installed through the Xbox app or the Microsoft Store, with the Epic Games Store and Steam listed as coming soon and no release date confirmed.
Do I need Display Driver Uninstaller to use any of this?
No. Neither Microsoft nor NVIDIA lists it as a requirement. It is a freeware tool from Wagnardsoft that is useful for clean reinstalls when something is genuinely broken, and you can skip it when the driver installs and behaves normally.





