Enable Neural Frame Rate Upscaling in Unreal Engine
Introduction
Understand neural graphics and NFRU
Set up the development environment
Set up the Unreal project with NFRU enabled
Validate NFRU in Unreal Engine
Understand console variables for NFRU
Set up a debug view in Unreal Engine
Use RenderDoc for Arm GPUs with NFRU for debugging and analysis
Next Steps
Enable Neural Frame Rate Upscaling in Unreal Engine
Introduction
Understand neural graphics and NFRU
Set up the development environment
Set up the Unreal project with NFRU enabled
Validate NFRU in Unreal Engine
Understand console variables for NFRU
Set up a debug view in Unreal Engine
Use RenderDoc for Arm GPUs with NFRU for debugging and analysis
Next Steps
Configure the plugin through Project Settings
In Development Editor, open Edit > Project Settings > Plugins > Neural Graphics 1.1.1 to configure the NFRU settings stored with the project.
After you save a setting that affects shaders or assets, relaunch Standalone Game to observe the result. If you are testing a packaged build, package the project again so the game includes the update. NFRU does not run in Play In Editor.
Configure the running build with console variables
Use these Neural Frame Rate Upscaling (NFRU) console variables to enable frame generation, inspect debug output, and tune frame pacing:
| Console variable | Type | Default | Description | Notes |
|---|---|---|---|---|
r.NFRU.Enable | int | 0 | Enables NFRU when set to 1. | — |
r.NFRU.CaptureDebugUI | int | 1 in non-shipping builds; 0 in Shipping | Captures debug UI rendered on the first Slate DrawWindow call. | — |
r.NFRU.UpdateGlobalFrameTime | int | 0 | Includes interpolated frames in global frame-time and FPS calculations. | — |
r.NFRU.ModifySlateDeltaTime | int | 1 | Sets the Slate delta time to zero during UI redraws to avoid NativeTick side effects. | Slate Redraw UI mode |
r.NFRU.PaceAdjuster | int | 0 | Enables dynamic target-FPS adjustment. | Set to 1 to enable |
r.NFRU.UpAdjustFrameCount | int | 40 | Sets how many frames above the target are required before the Pace Adjuster increases the target FPS. | Requires r.NFRU.PaceAdjuster 1 |
r.NFRU.DownAdjustFrameCount | int | 20 | Sets how many frames below the target are required before the Pace Adjuster decreases the target FPS. | Requires r.NFRU.PaceAdjuster 1 |
r.NFRU.UseFragmentShader | int | 1 | Uses the default fragment shader path when set to 1. | Set to 0 to select compute stages |
r.NFRU.OnlyInterpolatedFrames | int | 0 | Presents only interpolated frames for debugging. | Development and test builds only |
r.NFRU.ShowDebugView | int | 0 | Displays the NFRU intermediate-buffer grid. | Development and test builds only |
For example, enable NFRU and display its debug view with:
r.NFRU.Enable 1
r.NFRU.ShowDebugView 1
Tune frame pacing
Enable the Pace Adjuster when you want NFRU to change its target FPS in response to sustained performance changes:
r.NFRU.PaceAdjuster 1
r.NFRU.UpAdjustFrameCount 40
r.NFRU.DownAdjustFrameCount 20
r.NFRU.UpAdjustFrameCount controls how long performance must remain above the current target before the target increases. r.NFRU.DownAdjustFrameCount controls how long performance must remain below the target before it decreases. Larger values make the adjustment less reactive; smaller values make it respond sooner.
Use stat FrameGen while you tune these values. Compare generated and paced frames to check whether presentation keeps up with frame generation.
Monitor frame generation performance with STATGROUP_FrameGen
NFRU provides the STATGROUP_FrameGen statistics group to monitor frame generation performance at runtime.
Run the following command in the Unreal Engine console:
stat FrameGen
Monitor NFRU frame generation and pacing with stat FrameGen
This command displays runtime metrics such as generated frame rate, generation time, and pacing information. Use these values to assess both internal frame generation performance and final frame pacing.
| Stat | Stat ID | Description |
|---|---|---|
| Generated FPS | STAT_FrameGen_GeneratedFPS | Frames per second produced by the frame generator. Compare this value with the engine FPS from stat FPS. |
| Generated Ms | STAT_FrameGen_GeneratedMs | Average time in milliseconds to generate an interpolated frame. |
| Paced FPS | STAT_FrameGen_PacedFPS | Presentation-paced FPS after swap-chain pacing is applied. |
| Paced Ms | STAT_FrameGen_PacedMs | Average wall-clock time in milliseconds between paced frame presentations. |
Interpret frame generation statistics
When reviewing statistics, consider the following:
- Generated FPS and Generated Ms show internal frame generation performance.
- Paced FPS and Paced Ms reflect actual presentation cadence after pacing or synchronization.
Typically, Generated FPS matches the engine FPS, while Paced FPS might differ if pacing or synchronization limits the display rate.
What you’ve accomplished and what’s next
You’ve now learned how to adjust and optimize the main console variables that control NFRU features in Unreal Engine, including enablement, debugging, and performance tuning. You’ve also used STATGROUP_FrameGen to monitor frame generation performance.
Next, you’ll explore how to use the debug view to visualize frame interpolation and validate NFRU output during development and testing.