Before we get started, a few words that are important to me.
MSI Afterburner is and remains the best Nvidia GPU tool on the market. What Alexey "Unwinder" Nicolaychuk has accomplished over the years is nothing short of extraordinary. Afterburner is the gold standard for GPU tuning, OSD, fan control and advanced curve editing. NV-UV does not want to replace Afterburner. Not today, not tomorrow. NV-UV is a Companion Tool, it simplifies getting started with undervolting on Blackwell and automates things like preset switching, crash recovery and scanner-based optimization. But for fine-grained curve editing, overclocking, OSD and everything beyond undervolting, Afterburner remains the tool of choice. Once you've found your stable UV setting with NV-UV, you can close NV-UV and let AB take over, the profile sits in AB and runs normally from there.
NV-UV started as a small side project, for my own RTX 5090 and for friends I wanted to introduce to undervolting. That it has turned into something so many people actually want to use, I honestly never expected. I'm overwhelmed by all the interest.
Special thanks go to my NV-UV Discord community, testers who spent hours pushing the scanner to its limits, testers who helped me refine the UI, and everyone whose feedback made NV-UV better piece by piece. Also to my friends and family who put up with me being pretty scarce these past weeks. And a special thank you to the tech press, especially Raphael (PCGH) who discovered the tool and brought it to a wider audience, and Andreas (Hardwareluxx) who took a closer look at NV-UV. Thanks also to PCGH Hardware for giving NV-UV a home in their forum. This is exactly what the PC community has been about for years: tweaking, testing, gaming and having fun. Thank you, from the bottom of my heart. ❤️
— Christian
NV-UV is a GPU undervolting tool designed specifically for the NVIDIA RTX 50 Series (Blackwell). It simplifies the undervolting process, which normally requires manually editing MSI Afterburner's curve editor.
NV-UV uses Afterburner as its backend, so you need MSI Afterburner + RTSS installed.
| 🎚️ Voltage Lock | One click, GPU runs at an exact voltage/frequency point |
| 📊 4 Preset Levels | Eco · Balanced · Performance · Max, community-validated values per GPU |
| 🔍 Stock Curve Discovery | Automatically reads the real VF curve of your specific GPU from AB |
| 🔬 OCS → UV | Import AB OC Scanner results, build chip-specific UV curve |
| 🎮 Game Replay | Automatic step-down on crash, with per-game learning loop |
| ✈️ UV-Pilot | Detects 632 games automatically, switches to the optimal preset |
| ⚡ Voltage Step Scanner | Stage 1 (highest stable frequency) + Stage 2 (lowest stable voltage), DX12/DXR stress engine |
| 🎯 Optimize Point NEW | Stage 2 — find the lowest voltage for a fixed frequency, fine-tuning after Stage 1 |
| 📐 V-Step Compensation NEW | Scanner automatically compensates V-Droop for more precise tests |
| 🖥 Smart Hz | Desktop 60Hz, gaming native Hz. Saves ~10W idle. |
| 🌍 DE/EN | Full UI in German/English, live toggle in the footer |
| 🔥 3D Stress Test | DX12 + DXR render engine (headless) with heartbeat load patterns |
| ⚓ Anchor Profile | Right-click on slot — applied at startup, restored by UV-Pilot after games end |
| 🧊 Idle Optimization | Low voltages = stock, saves power at desktop/idle |
| 🔧 V-Step Fix | Compensates for the Blackwell point-before-flatten bug |
| 📐 Mini View | Compact view, perfect alongside AB's curve editor |
| 🎨 3 Skins | Dark + UV-Party + Royal Blue |
| ⏻ System Tray | Runs in background. Autostart will be added once the EXE is signed. |
| What | Details |
|---|---|
| GPU | NVIDIA RTX 5090, 5080, 5070 Ti, 5070, or 5060 Ti / 5060 (experimental) Ada cards (RTX 4090 / 4080 / 4070 Ti Super / 4070 Ti / 4070 Super / 4070) also supported RTX 4060 Ti / 4060 (experimental) |
| Driver | Latest NVIDIA driver |
| MSI Afterburner | Version 4.6.6+ with RTSS |
| Windows | Windows 11 (64-bit) |
0 mV, the V-Lock won't apply correctly,
and the scanner returns wrong results. Steps 1 and 2 below are
mandatory, not optional.
Enable hardware control and monitoringEnable low-level IO driverEnable low-level hardware access interface → user modeUnlock voltage control → standard MSI ⬅ criticalUnlock voltage monitoring ⬅ criticalGPU voltage ⬅ without this no V-LockGPU power905 mV) instead of 0 mV. If
it still shows 0, AB didn't accept the change — go back to step 1 and make
sure both Unlock options are really set.
Unlock checkboxes by itself.
If the voltage reading suddenly drops to 0 mV after a while, just walk through
steps 1+2 again. We're working on an automatic fix for this.
Start with Windows. Re-enable it only once your UV profile is
confirmed stable and you want it to apply permanently.
C:\NV-UV\, double-click NV-UV.exe (no admin needed).
NV-UV is portable, just copy the new EXE over the old one. Settings are preserved (%LocalAppData%\NV-UV\).
Afterburner's built-in OC Scanner tests how much extra frequency your GPU can handle at each voltage. The result alone is very conservative. NV-UV takes that chip-specific data and combines it with the proven Balanced preset as a baseline. Result: A UV curve based on your silicon.
Right-click for options: V-Lock / Multi-Point / Verify with Scanner.
The scanner tests a single voltage point and finds the maximum stable frequency. Ideal for validating a UV setting or finding the sweet spot for your GPU.
Stage 1 finds the highest stable frequency at a given voltage. Stage 2 reverses it: starting from a stable point, NV-UV searches for the lowest voltage at which that frequency still holds. This squeezes out another 10–30 mV without losing frequency.
Two-step workflow:
Example: Stage 1 finds 2992 MHz @ 910 mV as stable. Stage 2 then
tries 2992 MHz @ 905 / 900 / 895 / 890 mV until the GPU crashes.
If 895 mV was the last stable point, you now run the same performance at 15 mV
less voltage — fewer watts, less heat, identical frequency.
Until recently, NV-UV would only save the single point you picked in the optimize result dialog — all the other measured voltage probes were thrown away once the dialog closed. That hurt particularly badly when too aggressive undervolting drove the driver into a render-thread crash and the picker dialog became unresponsive: every measurement lost, Stage 2 from scratch.
Starting with v0.126, NV-UV writes the full optimize run to history before showing the picker. You then see a new entry in the history with a 🎯 marker, holding all probes from the run as expandable sub-entries:
🎯 from 925 mV · 11 probes · clean or after a crash
🎯 from 985 mV · 9 probes · TDR @ 935 mV. Click the header
to expand.
Why this matters: if you realize after the picker that your chosen point was too aggressive, you don't have to re-run the search — just expand the group and pick one of the more conservative probes (e.g. 5 or 10 mV higher). And if a driver crash kills NV-UV in the middle of a run, the entire group including all probes is still there after restart.
Right-click on a history entry → Verify runs an extended stress test with that exact frequency/voltage pair. Use this to double-check a Stage 1 or Stage 2 result with a longer run (e.g. 10 minutes instead of 3) before committing it to a slot.
In the scanner window: 🧪 VRAM-only Test button. Locks the core to stock and tests only the VRAM offset you set. Useful when you want to isolate whether a crash comes from VRAM OC or from core UV: lock the core to a verified value first, then push VRAM separately.
| 🔄 Game DB Auto-Update (v0.96) | The Game Browser now has a new "🔄 Updates" button. Click it to download the latest game database from GitHub. Optionally, enable automatic checks on each start in the same popup. Updates come from the central nv-uv-docs repository; your own games and overrides remain untouched. |
| 💡 Hover Tooltips (v0.96) | In the Game Browser, the tier dropdowns now show the concrete values of each profile on hover (e.g. "Performance · 975 mV / 3000 MHz · PL 100%"). Also works for the filter dropdown at the top. |
| ✨ MFG Tier (v0.95 hf3) | Dedicated tier for Multi Frame Generation titles, all RTX 50-series cards. Full power limit at Eco voltage with a slightly reduced clock. Assigned per game via the game database. |
| NVAPI Direct Mode | Scanner now writes frequency/voltage directly through the driver instead of going via AB profiles, ~50 ms instead of ~2 s per point. Drastically faster scans. |
| VRAM OC from Phase 1 | If you set a VRAM offset in the scanner, it's now active during the frequency search, not only during verification. Stability verdicts become much more realistic. |
| Stage 2 Optimize Point | Find the lowest stable voltage for a fixed frequency, see above. |
| V-Step Compensation | Dedicated checkbox in the scanner. Automatically compensates V-Droop under load. See the "Optional Features" section. |
| FMA Math-Error Detection | Compute shader detects GPU calculation errors in the background |
| WHEA Pre-Crash | Windows hardware error events detect instability before a hard crash |
| Plateau Detection | Automatically stops when the GPU can't boost higher at a given voltage |
| Offset Cap | Start offset capped at +1000 MHz (or +1200 with Boost Override) |
| Warmup once per session | Only the first step warms up, subsequent steps start immediately |
| Power Limit Slider | Full PL range in the scanner, from GPU minimum (~60%) to maximum |
| Skip Warmup | Optional, for water-cooled setups where GPU temp is already stable |
Just play, Game Replay handles the rest. On a UV crash, frequency is automatically lowered.
Game Replay now remembers crash adjustments per game. On the next launch of the same game, UV-Pilot automatically applies the reduced frequency. A game crashes once, next time the safe profile is loaded directly.
Crash histories are now tracked per game + profile combination. Previously, for example, a Performance-tier crash on a game would carry over to a later assigned Custom profile too. Since v0.94 every profile (Eco / Balanced / Performance / Max / Custom XYZ) has its own clean history. A Custom profile no longer inherits crashes from the presets.
nv-uv_game_replay_adjustments.json is detected as the old format and cleared once (log warning: "Old adjustment format detected — discarded"). After that the history rebuilds per profile. No manual action needed.Manual applies (slot-button click without UV-Pilot) still don't persist: on a crash the live downstep applies, but no JSON entry is written because without Pilot context it can't be uniquely tied to a profile.
| Type | What happens |
|---|---|
| Soft Crash (TDR) | Driver recovers, 15s cooldown, downstep written live, keep playing |
| Hard Crash (Page Fault) | Downstep saved, automatically applied on next NV-UV start |
🎮 Replay toggle in toolbar, right-click for settings. Strategy: lower frequency (default), raise voltage, or both. Step sizes and safety limits configurable.
Built-in DX12 + DXR stress test that simulates realistic gaming load. The engine constantly switches between idle and full load (heartbeat pattern), creating the transients that cause UV instability.
| Resolution | Recommended for |
|---|---|
| 1440p | 5080 5070 Ti 5070 |
| 4K Supersampled | 5090 |
UV-Pilot detects running games and automatically switches to the matching UV profile.
| Tier | Description |
|---|---|
| 🔥 Max | Highest performance, Cyberpunk 2077, Alan Wake 2 |
| 🚀 Performance | Strong, Elden Ring, Hogwarts Legacy |
| ⚡ Balanced | Standard, CS2, Valorant, most games |
| 🌿 Eco | Efficient, older/lighter games |
| ✨ MFG | For Multi Frame Generation titles, RTX 50-series only. Assignable via the game database. |
The MFG tier uses the Eco voltage with full power limit and a slightly reduced clock. It is not directly selectable via the tier buttons in the main window, it is assigned per game in the game database. Recommended at 3x or 4x MFG, where savings at high frame rates are largest.
Right-click a slot: "Add to UV-Pilot" creates a custom profile. Assignable per game in the game database.
Right-click UV-Pilot → 🎮 Game Database. 632 games + benchmarks, tier assignments adjustable, custom games addable.
3DMark is recognized but no UV tier is assigned — your active profile stays as-is. This lets you benchmark with your chosen UV without the Pilot switching profiles. A custom profile can optionally be assigned via the Game Browser.
Right-click UV-Pilot → "📐 Mini View on Gaming". Automatically switches to Mini View on game detection, saving GPU overhead from the WPF main window. Disabled by default.
Starting with v0.94, UV-Pilot prioritizes the process of the currently focused window. This resolves the case where two or more game-database entries are running simultaneously, typically browser + game.
Before: Chrome was open (Eco tier), you launched a game → the Chrome-Eco profile stayed active until Chrome was fully closed.
Now: As soon as the game window is focused, the Pilot detects the switch and applies the matching game profile. The switch back works the same way — Alt-Tab to Chrome switches to Eco, Alt-Tab into the game switches back to Performance.
The Anchor profile is your "home slot". It defines which UV profile NV-UV should automatically load in two situations: at program startup and after a game ends.
Right-click on a slot with a saved UV profile → ⚓ Set as Anchor. The slot will get the ⚓ marker and be highlighted in the slot overview.
| Situation | What happens |
|---|---|
| Program startup (New in v0.95 hf1) | NV-UV detects the anchor profile and loads it automatically on startup. Works without UV-Pilot too, ideal for Windows autostart setups. |
| After games end | UV-Pilot detects game exit and restores the anchor profile, instead of returning to the previous slot. Requires UV-Pilot to be active. |
You keep your daily UV in Slot 1 (e.g. 2902 MHz @ 950 mV) and set it as Anchor. On Windows boot, NV-UV launches via autostart, AB starts up, and Slot 1 is active immediately, no clicks needed. When you launch a game that UV-Pilot maps to tier "Max", the Pilot briefly switches to Slot 4. After the game ends, it returns to Slot 1 (Anchor), not to the previous state.
Sets all voltage points below 850 mV to stock frequency. Saves power at desktop/idle.
Compensates for the Blackwell point-before-flatten bug. Under load, the GPU uses the voltage point before the lock (~10 mV less). V-Step Fix compensates automatically.
Applies to: Quick-Lock in the main window (V-Lock mode). Available as a checkbox next to the voltage slider.
The scanner window has its own V-Step Compensation checkbox. It does something different from V-Step Fix above, so here's a clear comparison:
| Feature | Where | What it does |
|---|---|---|
| 🔧 V-Step Fix | Main window (when applying a V-Lock) |
Shifts the lock point up by one VF step so the GPU doesn't fall to the point before it under load. |
| 📐 V-Step Compensation | Scanner window (during a scan) |
Continuously measures the difference between the requested voltage and the voltage actually arriving at the chip (V-Droop) and corrects subsequent test steps accordingly. |
When should I enable it? When you want precise voltages in the scanner. Example: you ask for 910 mV but MAHM reports 905 mV — the 5 mV delta gets added internally so the next test steps actually hit 910 mV at the chip, not just 905. This makes scan results far more reproducible, especially if you're using Stage 2 (Optimize Point) where every millivolt matters.
Fully automatic, runs silently in the background. In the log you'll see lines
like [VDroop] adapted: req 910 mV → MAHM 905 mV (Δ+5) → comp 5 mV.
Enabled by default.
Slider limits maximum power draw. Eco presets set PL reduced, MFG / Performance / Max to 100%.
Memory clock offset. Default: 0 MHz. GDDR7 rarely benefits from memory OC.
Removes the 50 MHz safety margin below stock maximum. Advanced users only.
% button in the footer. Steps: 100% through 300%. All windows scale together.
Automatically switches desktop to 60Hz when no game is running, native refresh rate when a game starts. Saves ~10W idle. Toggle is in the toolbar — tooltip shows "experimental" as multi-monitor support is still limited.
Compact view without curve. 📐 Mini in toolbar, ↩ Full to return. Always on top. All features available: Slots, Presets, V-Lock, PL, VRAM, Scanner, OCS → UV.
Right-click UV-Pilot → "📐 Mini View on Gaming" enables automatic switch to Mini View when a game is detected. Returns to full view when the game exits. Disabled by default.
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 910 mV | 2430 MHz | 85% |
| ⚡ Balanced | 935 mV | 2887 MHz | 90% |
| 🚀 Performance | 1025 mV | 3105 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 850 mV | 2800 MHz | 88% |
| ⚡ Balanced | 900 mV | 2800 MHz | 90% |
| 🚀 Performance | 925 mV | 2980 MHz | 100% |
| 🔥 Max | 975 mV | 3150 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 850 mV | 2500 MHz | 80% |
| ⚡ Balanced | 900 mV | 2800 MHz | 90% |
| 🚀 Performance | 935 mV | 2955 MHz | 100% |
| 🔥 Max | 950 mV | 3000 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 850 mV | 2600 MHz | 80% |
| ⚡ Balanced | 900 mV | 2750 MHz | 90% |
| 🚀 Performance | 940 mV | 3000 MHz | 100% |
| 🔥 Max | 975 mV | 3150 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 800 mV | 2500 MHz | 80% |
| ⚡ Balanced | 875 mV | 2700 MHz | 90% |
| 🚀 Performance | 925 mV | 2900 MHz | 100% |
| 🔥 Max | 975 mV | 3000 MHz | 100% |
Note: The 5060 (non-Ti) uses this table as fallback. Since it's a smaller GB206 cut with lower TBP, it caps itself via the power limit and the values stay safe.
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 875 mV | 2400 MHz | 100% |
| ⚡ Balanced | 900 mV | 2550 MHz | 100% |
| 🚀 Performance | 925 mV | 2670 MHz | 100% |
| 🔥 Max | 950 mV | 2745 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 875 mV | 2400 MHz | 100% |
| ⚡ Balanced | 900 mV | 2520 MHz | 100% |
| 🚀 Performance | 925 mV | 2640 MHz | 100% |
| 🔥 Max | 950 mV | 2700 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 925 mV | 2550 MHz | 100% |
| ⚡ Balanced | 940 mV | 2640 MHz | 100% |
| 🚀 Performance | 950 mV | 4070 Ti Super: 2730 MHz 4070 Ti: 2685 MHz | 100% |
| 🔥 Max | 975 mV | 2820 MHz | 100% |
The 4070 Ti Performance value was recalibrated from 2730 to 2685 MHz. The 4070 Ti (full AD104 die, typically worse binning) needs roughly 30 MHz less headroom at the same voltage than the 4070 Ti Super (AD103 cut, better chip selection). Other presets (Eco / Balanced / Max) are identical on both cards.
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 900 mV | 2400 MHz | 100% |
| ⚡ Balanced | 925 mV | 2550 MHz | 100% |
| 🚀 Performance | 940 mV | 2670 MHz | 100% |
| 🔥 Max | 975 mV | 2790 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 900 mV | 2400 MHz | 100% |
| ⚡ Balanced | 925 mV | 2550 MHz | 100% |
| 🚀 Performance | 950 mV | 2650 MHz | 100% |
| 🔥 Max | 975 mV | 2750 MHz | 100% |
| Preset | Voltage | Frequency | PL |
|---|---|---|---|
| 🍃 Eco | 875 mV | 2300 MHz | 100% |
| ⚡ Balanced | 900 mV | 2450 MHz | 100% |
| 🚀 Performance | 925 mV | 2600 MHz | 100% |
| 🔥 Max | 950 mV | 2730 MHz | 100% |
Note on the RTX 4060: the AD107 chip scales unusually weakly with additional voltage. Higher mV barely yields more MHz, so the tier values sit closer together than on larger Ada chips.
No. NV-UV uses Afterburner as its backend. AB must be installed. For OC, OSD and advanced curve editing, AB is still the go-to tool.
No voltages are increased, only lowered. Everything resettable via Stock button or Recalibrate. However, I assume no liability for any damage that may occur directly or indirectly through undervolting.
Quick check: look at Afterburner's main window. Does the
"VOLT" field also show 0 mV? Then AB itself isn't reading voltage
either — the problem is in AB, not in NV-UV. Fix:
Unlock Voltage Control ✓ and Unlock Voltage Monitoring ✓
GPU voltage ✓
905 mV). Only then can NV-UV see the voltage too.
Detailed walkthrough with all recommended checkboxes: see Installation → Steps 1 + 2 above.
Note for Reference-Design RTX 5090: on some cards
Afterburner occasionally resets the Unlock checkboxes by itself.
If the voltage reading disappears after a while, just walk through steps 1+2
again.
Normal GPU boost behavior. NV-UV sets a V-Lock at e.g. 950 mV, but the GPU only boosts to the voltage it thermally/power-wise needs. With a UV profile (curve flattened at lock point), there's no incentive to boost higher. Not a bug.
Two possible reasons:
1. Safe Limit: Scanner stops 50 MHz below stock max by default. Enable "Override Safe Limit" to remove it.
2. Driver Limit: NVIDIA caps frequency offset at +1000 MHz per voltage point. Solution: Test at a lower voltage where there's more headroom.
Fixed in Antares! Plateau detection automatically stops the scanner when the GPU can't boost higher. If you're on an older version: update to Antares.
Normal! Not every GPU can handle every preset. Try the next higher preset, or use the scanner for individual optimization. With Game Replay: just keep playing, the frequency is lowered automatically, ideally while still in the game or after the crash on the next launch.
V-Lock fixes the GPU to one voltage/frequency point. Simple, reliable, recommended method.
Multi-Point sets multiple points on the curve (e.g. from OCS Import). More complex but potentially more efficient across the voltage range.
Self-contained .NET 9 runtime. No installation needed, just run the EXE.
Not planned. DXR stress testing requires Windows 11.
Fully supported. Since "Ada improved" (v0.94) the native Ada write path is active. The byte-exact curve encoder has been verified on a KFA2 RTX 4070 Ti (AD104) and runs end-to-end — Apply, Scanner, Game Replay and UV-Pilot all work. The preset values (frequency/voltage targets) are community-based; Ada testers with RTX 4090 (AD102) and RTX 4080 / 4080 Super (AD103) especially welcome to help refine the per-chip constants — reach out on the PCGH forum or Discord. RTX 4060 Ti (AD106) and RTX 4060 (AD107) are also supported with experimental preset values from AI-DeepSearch research; testers with these cards welcome too.
These are Blackwell-specific compensations:
Ada uses a completely separate UV path (native 4-zone curve) that doesn't need any of these three compensations. For that reason the checkboxes are automatically hidden on Ada cards in both the main and mini view.
The WPF main window uses GPU resources for rendering and DWM compositing. In 3DMark this can cost ~200-500 points. Solution: Use Mini View, minimize NV-UV to tray, or enable Auto-Mini on Gaming (right-click UV-Pilot). Your UV profile stays active in AB even when NV-UV is minimized/closed.
False positive. Self-contained .NET SingleFile EXEs are sometimes flagged. NV-UV is safe, you can add an exception.
%LocalAppData%\NV-UV\ contains: UV profiles, slot names, Game Replay adjustments, scanner history, OCS data, stock curve, CCB cache, logs.
Via the Log Export button below the log panel. The log file is exported and can be sent directly to Christian.
Always back up your profiles manually before experimenting. If profiles are lost: check the NV-UV folder at %LocalAppData%\NV-UV\, that's where saved data, OCS curves and scanner history are stored.
Settings → General, disable Start with Windows. This prevents an unstable profile from being loaded automatically at boot, in case a UV setting kills the driver during startup. Only re-enable AB autostart once your UV setting has been verified stable in games.Latest NVIDIA driver installed? Start NV-UV after Windows desktop has loaded.
AB + RTSS must be running. Enable voltage monitoring in AB (see FAQ above). Restart AB.
In AB under Settings → Monitoring → Active hardware monitoring graphs, disable the plug-ins GPU.dll and HwInfo.dll. These access the same GPU sensors in parallel that NV-UV uses via MAHM, which causes conflicting sensor reads. MAHM then only returns valid values sporadically (voltage jumps, shows 0 or unrealistic numbers).
Enable Unlock Voltage Control in AB. Missing stock curve? Click 🔄 Recalibrate.
Try a higher preset, or use the scanner. Game Replay lowers frequency automatically.
Please post feedback directly in the Feedback thread on the PCGH forum or to Christian on Discord, screenshot + text.
%LocalAppData%\NV-UV\nv-uv.log, please include with bug reports! Exportable via the Log Export button below the log panel.NV-UV uses NvApiNative.dll, a native NVAPI bridge derived from the open-source project Green Curve by aufkrawall. Green Curve demonstrated how to access the VF curve on Blackwell GPUs directly via NVAPI entry points. NV-UV applies this approach for Scanner Direct Mode and Point Optimization.
Project repository: https://github.com/aufkrawall/green-curve
The full text of the MIT license is reproduced below:
MIT License Copyright (c) 2026 aufkrawall Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Many thanks to aufkrawall for Green Curve and for making the project available under an open license.