Skip to content

Commit 3d650f1

Browse files
authored
Merge pull request #2219 from annietllnd/neural-graphics
Add LPs on neural graphics
2 parents a27f60f + 21bba64 commit 3d650f1

27 files changed

+717
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: Introduction to neural graphics and Neural Super Sampling (NSS)
3+
weight: 2
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## What is the Neural Graphics Development Kit?
10+
11+
The Neural Graphics Development Kit empowers game developers to build immersive mobile gaming experiences using a neural accelerator for post-processing effects like upscaling. By combining Unreal Engine and the ML extensions for Vulkan, these tools allow you to integrate and evaluate AI-based upscaling technologies like Neural Super Sampling (NSS). This Learning Path walks you through the setup and execution of NSS for Unreal Engine.
12+
13+
## What is Neural Super Sampling?
14+
15+
NSS is an upscaling technology from Arm, purpose-built for real-time performance and power efficiency on mobile and embedded platforms.
16+
17+
It uses a compact neural network to:
18+
- Upscale low-resolution frames into high-resolution visuals
19+
- Incorporate temporal data such as motion vectors, depth, and feedback
20+
- Reduce bandwidth usage and GPU load
21+
22+
Powered by the ML extensions for Vulkan, this new technology delivers smooth, crisp image quality, optimized for **mobile-class hardware** with a **Neural Accelerator** (NX). You’ll be able to render frames at a lower resolution and then upscale them using the technology, which helps you achieve higher frame rates without compromising the visual experience. This is especially useful on mobile, handheld, or thermally limited platforms, where battery life and thermal headroom are critical. It can also deliver improved image quality compared to other upsampling techniques, like spatio-temporal implementations.
23+
24+
Under the hood, Neural Super Sampling for Unreal Engine (NSS for UE) runs its neural inference through Vulkan using **ML extensions for Vulkan**, which bring machine learning workloads into the graphics pipeline. The Development Kit includes **emulation layers** that simulate the behavior of the extensions on Vulkan compute capable GPUs. These layers allow you to test and iterate without requiring access to NX hardware.
25+
26+
## Neural Upscaling in Unreal Engine
27+
28+
With these resources, you can seamlessly integrate NSS into any Unreal Engine project. The setup is designed to work with Vulkan as your rendering backend, and you don’t need to overhaul your workflow - just plug it in and start leveraging ML-powered upscaling right away. The technology is available as a source-code implementation that you will build with Visual Studio.
29+
30+
## Download required artifacts
31+
32+
Before you begin, download the required plugins and dependencies. These two repositories contain everything you need to set up NSS for Unreal Engine, including the VGF model file, and the ML Emulations Layers for Vulkan.
33+
34+
### 1. Download the NSS plugin
35+
36+
[**Neural Super Sampling Unreal Engine Plugin** → GitHub Repository](https://github.com/arm/neural-graphics-for-unreal)
37+
38+
Download the latest release package and extract it on your Windows machine.
39+
40+
### 2. Download the runtime for ML Extensions for Vulkan
41+
[**Unreal NNE Runtime RDG for ML Extensions for Vulkan** → GitHub Repository](https://github.com/arm/ml-extensions-for-vulkan-unreal-plugin).
42+
43+
Download and extract the release package on your Windows machine.
44+
45+
Once you’ve extracted both repositories, proceed to the next section to set up your development environment and enable the NSS plugin.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
title: Setting up the emulation layers
3+
weight: 3
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Install dependencies
10+
11+
To run NSS in your Unreal Engine project, install and configure the following:
12+
13+
- **Vulkan SDK**: Required for development of applications that use Vulkan, and to enable the Vulkan Configurator. The latter sets up the emulation layers used for running ML extensions for Vulkan workloads.
14+
- **ML Emulation Layer for Vulkan**: These layers allows neural inference to run in emulation through Vulkan’s compute backend. They are activated by Vulkan Configurator to run with the Unreal Engine plugin. The layers are included in the `NNERuntimeRDGMLExtensionsForVulkan` zip you downloaded in a previous step. The Vulkan layer configuration activates the ML Emulation Layer for Vulkan, which implements the ML extensions for Vulkan.
15+
- **NSS for Unreal Engine plugins**: These include `NSS` (the inference and model interface) and `NNERuntimeRDGMLExtensionsForVulkan` (which connects Unreal’s Render Dependency Graph to the ML extensions for Vulkan).
16+
17+
These components allow you to run NSS in Unreal Engine, using ML emulation layers for Vulkan for development and testing.
18+
19+
## Install Vulkan Software Development Kit
20+
21+
Go to the [Vulkan SDK landing page](https://vulkan.lunarg.com/sdk/home) and download the SDK Installer for Windows. After you have run the installer, you can move on to the next step.
22+
23+
## Configure Vulkan Layers
24+
25+
Vulkan Configurator is a program that will run the emulation layers in the background when you want to utilize them with Unreal Engine.
26+
27+
To emulate the ML extensions for Vulkan:
28+
1. Launch the **Vulkan Configurator** (bundled with the Vulkan SDK) from the Windows **Start** menu.
29+
2. In the **Apply a Vulkan Loader Configuration** list, right-click and choose **Create a new Configuration**. You can give the new configuration any name, for example `NSS`.
30+
3. Navigate to the **Vulkan Layers Location** tab.
31+
4. Append a user-defined path pointing to the emulation layers you downloaded in the previous section:
32+
```
33+
<download-path>/NNERuntimeRDGMLExtensionsForVulkan/MLEmulationLayerForVulkan
34+
```
35+
![Add user-defined Vulkan layers path in Vulkan Configurator#center](./images/load_layers.png "Figure 1: Add Vulkan layer path.")
36+
37+
5. Ensure the Graph layer is listed *above* the Tensor layer, and that you've set up the configuration scope as shown in the image.
38+
39+
![Layer configuration showing Graph above Tensor#center](./images/verify_layers.png "Figure 2: Verify layer ordering and scope.")
40+
41+
42+
{{% notice %}}
43+
Keep the Vulkan Configurator running to enable the emulation layers during engine execution.
44+
{{% /notice %}}
45+
46+
## Enable NSS for Unreal Engine
47+
48+
1. Open Unreal Engine and create a new **Third Person** template project using the **C++** option.
49+
50+
![Unreal Engine project selection screen showing C++ Third Person template#center](./images/unreal_startup.png "Figure 3: Create a new C++ project in Unreal Engine.")
51+
52+
2. Open the project in **Visual Studio**. Build it from source through **Build** > **Build Solution** or with `Ctrl+Shift+B`.
53+
54+
After the build is finished, open your project in Unreal Engine.
55+
56+
## Change Unreal’s Rendering Interface to Vulkan
57+
58+
By default, Unreal uses DirectX. Instead, you need to choose Vulkan as the default RHI:
59+
1. Go to:
60+
```
61+
Project Settings > Platform > Windows > Targeted RHIs > Default RHI
62+
```
63+
2. Select **Vulkan**.
64+
3. Restart Unreal Engine to apply the change.
65+
66+
![Project Settings with Vulkan selected as Default RHI under Targeted RHIs#center](./images/targeted_rhis.png "Figure 4: Set Vulkan as the default RHI.")
67+
68+
69+
## Add and enable the plugins
70+
71+
1. Open your project directory in Windows explorer, and create a new folder called `Plugins`.
72+
2. Copy the downloaded and extracted `.zips` into the new directory:
73+
- `NNERuntimeRDGMLExtensionsForVulkan`
74+
- `NSS`
75+
3. Re-open Unreal Engine. When prompted, confirm plugin integration.
76+
4. Rebuild your project in Visual Studio from source.
77+
5. Verify the installation by opening the Plugins view in Unreal Engine, and making sure the checkbox is selected for both `NSS` and `NNERuntimeRDGMLExtensionsForVulkan` as shown. Restart Unreal Engine if prompted.
78+
79+
![Unreal Engine plugins window showing NSS and NNERuntimeRDGMLExtensionsForVulkan enabled#center](./images/verify_plugin_enabled.png "Figure 5: Verify plugin installation in Unreal Engine.")
80+
81+
With the emulation layers and plugins configured, you're ready to run Neural Super Sampling in Unreal Engine. Continue to the next section to test the integration.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: Run the example
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Start the level and verify NSS
10+
11+
Press the green **Play** button to start the level. To verify NSS is running, you can run this command in Unreal:
12+
```
13+
ShowFlag.VisualizeTemporalUpscaler 1
14+
```
15+
You’ll see **NSS** listed in the rendering summary.
16+
17+
{{% notice %}}
18+
In **Project Settings > Plugins > Neural Super Sampling**, you can view and configure the active neural network model being used.
19+
{{% /notice %}}
20+
21+
Run `ShowFlag.VisualizeTemporalUpscaler 0` to disable the overview. To visualize the NSS model output in real-time, run the following command:
22+
```
23+
r.NSS.Debug 2
24+
```
25+
26+
This will add real-time views showing the model’s processed outputs, such as predicted filter coefficients and feedback, as below. In the [Wrapping up section](./6-wrapping-up.md), you will find links to learn more about what the debug outputs mean.
27+
28+
![Debug view of Neural Super Sampling model output in Unreal Engine#center](./images/nss_debug.png "Figure 6: Visualize NSS model debug output in real time.")
29+
30+
## NSS model on Hugging Face
31+
32+
The model that powers NSS is published on Hugging Face in the [VGF format](https://github.com/arm/ai-ml-sdk-vgf-library). This format is optimized for inference via ML extensions for Vulkan.
33+
34+
Visit the [NSS model page on Hugging Face](https://huggingface.co/Arm/neural-super-sampling/)
35+
36+
On this landing page, you can read more about the model, and learn how to run a test case - a _scenario_ - using the ML SDK for Vulkan.
37+
38+
## Result
39+
40+
You now have Neural Super Sampling integrated and running inside Unreal Engine. This setup provides a real-time testbed for neural upscaling.
41+
42+
Proceed to the next section to debug your frames using RenderDoc, or move on to the final section to explore more resources on the technology behind NSS.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
title: Using RenderDoc for Debugging and Analysis
3+
weight: 6
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Why use RenderDoc with Neural Super Sampling?
10+
11+
As you integrate neural upscaling techniques into your game, visual debugging and performance profiling become essential. RenderDoc is a powerful frame capture and analysis tool that allows you to step through a frame, inspect Vulkan API calls, view shader inputs and outputs, and understand the state of resources. Arm has released some additional features, which are captured in [RenderDoc for Arm GPUs](https://developer.arm.com/Tools%20and%20Software/RenderDoc%20for%20Arm%20GPUs).
12+
13+
You might want to use RenderDoc when:
14+
15+
- You see unexpected visual output or want to step through the frame rendering process.
16+
- You need to analyze the sequence of Vulkan API calls made by the engine.
17+
- You’re inspecting memory usage or the state of specific GPU resources.
18+
- You want to validate your data graph pipeline execution or identify synchronization issues.
19+
20+
## Install Arm Performance Studio
21+
22+
To access RenderDoc for Arm GPUs containing the added features with ML extensions for Vulkan, you should install Arm Performance Studio. Download it from the [Arm Performance Studio Downloads](https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Studio#Downloads). The minimum version to use is `2025.4`
23+
24+
Refer to the [Arm Performance Studio install guide](./install-guides/ams) to set it up.
25+
26+
Upon a finished installation, you can find the installed version of RenderDoc for Arm GPUs using the Windows **Start** menu.
27+
28+
## Use in Unreal Engine
29+
30+
### 1. Configure the executable path
31+
32+
To enable integration with Unreal Engine:
33+
34+
1. Open your Unreal Engine project.
35+
2. Go to **Edit > Project Settings > Plugins > RenderDoc**.
36+
3. Under **Path to RenderDoc executable**, enter the full path to the directory where the `qrenderdoc.exe` binary is located.
37+
4. Restart Unreal Engine for the setting to take effect.
38+
39+
![RenderDoc plugin path setup in Unreal Engine#center](./images/renderdoc_plugin_ue.png "Figure 7: Set the RenderDoc executable path in Unreal Engine plugin settings.")
40+
41+
42+
## 2. Ways to capture
43+
44+
### Option 1: Attach to the Running Editor
45+
46+
1. Launch RenderDoc for Arm GPUs separately.
47+
2. Go to **File > Attach to Running Instance**.
48+
3. A list of running Vulkan-enabled applications will appear. Select the hostname that corresponds to the UE Editor session (with UI) or use Standalone Running App (see image below).
49+
4. Click **Connect to App**.
50+
5. Click **Capture Frame Immediately** or set up the capture settings otherwise.
51+
52+
### Option 2: Use plugin inside Unreal Engine
53+
1. Open your project and scene where you want to perform a capture.
54+
2. Click the **RenderDoc Capture** button in the Level Viewport (see image below).
55+
56+
![RenderDoc capture button in Unreal Engine Level Viewport, or Attach to Running Instance #center](./images/renderdoc.png "Figure 8: Two options to capture frames using RenderDoc with Unreal Engine.")
57+
58+
## 3. Capture a Frame
59+
60+
1. Return to Unreal Engine and **Play in Editor** to launch your game level.
61+
2. In RenderDoc for Arm GPUs, click **Capture Frame Now** (camera icon) or press `F12` while the UE window is focused.
62+
3. Once captured, double-click the frame in RenderDoc to open a detailed breakdown of the GPU workload.
63+
64+
You can now:
65+
66+
- Step through draw calls and dispatches.
67+
- Inspect bound resources, descriptor sets, and shaders.
68+
- Explore the execution of your data graph pipeline frame-by-frame.
69+
70+
If you want to learn more about RenderDoc for Arm GPUs, you can check out the [Debug With RenderDoc User Guide](https://developer.arm.com/documentation/109669/latest).
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: Wrapping up
3+
weight: 7
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
With the NSS for UE plugin, you’re set up to explore real-time neural graphics with Neural Super Sampling. This toolchain gives you direct access to state-of-the-art upscaling powered by machine learning.
10+
11+
You’ve covered:
12+
- Understanding the role of **ML Extensions for Vulkan** and how emulation layers let you run everything without needing dedicated ML hardware
13+
- Installing the **Vulkan SDK** and enabling ML Emulation Layer for Vulkan using Vulkan Configurator
14+
- Setting up the **NSS for Unreal Engine** plugins, and visualizing the model output
15+
- Inspecting the **NSS model** in VGF on Hugging Face
16+
17+
This ecosystem is built for developers who want to push boundaries - whether on flagship mobile SoCs or desktop dev kits. NSS is designed to give you better image quality without the complexity of building custom ML infrastructure.
18+
19+
To learn more about the different aspects in this Learning Path, check out the following resources:
20+
- [Neural Graphics Development Kit landing page](https://developer.arm.com/mobile-graphics-and-gaming/neural-graphics-for-mobile)
21+
- [NSS Use Case Guide](https://developer.arm.com/documentation/111009/latest/)
22+
- [Debugging NSS content with RenderDoc](https://developer.arm.com/documentation/109669/latest)
23+
- [Learning Path: Get started with neural graphics using ML Extensions for Vulkan](/learning-paths/mobile-graphics-and-gaming/vulkan-ml-sample)
24+
25+
Happy building - and welcome to the future of neural upscaling in Unreal!
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: Neural Super Sampling in Unreal Engine
3+
4+
minutes_to_complete: 30
5+
6+
who_is_this_for: This is an introductory topic for developers experimenting with neural graphics using Unreal Engine® and ML Extensions for Vulkan®.
7+
8+
9+
learning_objectives:
10+
- Understand how Arm enables neural graphics for game development
11+
- Configure ML extensions for Vulkan emulation
12+
- Enable Neural Super Sampling (NSS) in Unreal Engine
13+
- Run and visualize real-time upscaling with NSS
14+
15+
16+
prerequisites:
17+
- Windows 11
18+
- Unreal Engine 5.5 (Templates and Feature Pack enabled)
19+
- Visual Studio 2022 (with Desktop Development with C++ and .NET desktop build tools)
20+
21+
22+
author: Annie Tallund
23+
24+
### Tags
25+
skilllevels: Introductory
26+
subjects: ML
27+
armips:
28+
- Mali
29+
tools_software_languages:
30+
- Unreal Engine
31+
- Vulkan SDK
32+
- Visual Studio
33+
operatingsystems:
34+
- Windows
35+
36+
37+
38+
further_reading:
39+
- resource:
40+
title: Neural Graphics Development Kit
41+
link: https://developer.arm.com/mobile-graphics-and-gaming/neural-graphics-for-mobile
42+
type: website
43+
- resource:
44+
title: NSS Use Case Guide
45+
link: https://developer.arm.com/documentation/111009/latest/
46+
type: documentation
47+
- resource:
48+
title: RenderDoc for Arm GPUs
49+
link: https://developer.arm.com/Tools%20and%20Software/RenderDoc%20for%20Arm%20GPUs
50+
type: documentation
51+
- resource:
52+
title: How Arm Neural Super Sampling works
53+
link: https://community.arm.com/arm-community-blogs/b/mobile-graphics-and-gaming-blog/posts/how-arm-neural-super-sampling-works
54+
type: blog
55+
56+
57+
58+
### FIXED, DO NOT MODIFY
59+
# ================================================================================
60+
weight: 1 # _index.md always has weight of 1 to order correctly
61+
layout: "learningpathall" # All files under learning paths have this same wrapper
62+
learning_path_main_page: "yes" # This should be surfaced when looking for related content. Only set for _index.md of learning path content.
63+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---
179 KB
Loading
206 KB
Loading
417 KB
Loading

0 commit comments

Comments
 (0)