Niagara Compute Shader Integration

Overview

This project is an Unreal Engine 5 plugin that demonstrates compute shader integration with the Niagara particle system.

There are several different methods to achieve this, each has its own module.
I have provided an easy-to-configure boids example for each method.

I hope that this repo is a good place to start playing with UE5 graph builder.

Modules

Compute Core

Runtime Module.

A shared module that provides default settings and utilities, ensuring consistency and efficiency across all modules.

Niagara Example

Runtime Module.

A boids system implemented entirely within Niagara without compute shaders and using the Particle Attribute Reader instead.

Compute RP SUB Example

Runtime Module.

Demonstrates how to extend ComputeRPExample to pass shader data into materials by hooking into the scene buffer.

Examples

  1. Structured Buffer -> Material

Compute RP Example

Runtime Module.

Demonstrates the use of Graph Builder to setup and run compute shaders.

Examples

  1. Structured Buffer -> Niagara
  2. Structured Buffer -> Render Target -> Niagara

Compute RP Legacy Example

Runtime Module.

Demonstrates the use of manual management over the compute pipeline to setup and run compute shaders.

Examples

  1. Structured Buffer -> Niagara

Getting Started

Estimated Completion Time:

5 minutes.

Installing

Familiarise yourself with the Unreal Docs on Working with Plugins.
If you are installing to a specific project; Place the whole ST_NiagaraCSIntegration directory inside the Plugins folder located in your projects root folder (where the .uproject lives). If you currently have no plugins installed, you may need to a plugins folder if one does not exist.
If you are installing to the engine; You can do this from your library on the Epic Launcher. Otherwise, place the whole ST_NiagaraCSIntegration directory inside the Plugins\Marketplace folder located at UE_5.X\Engine\Plugins\Marketplace.

If you installed outside of the Epic Launcher; add the following to your “Plugins” array in your .uproject

{
"Name": "ST_NiagaraCSIntegration",
"Enabled": true,
"MarketplaceURL": "https://www.fab.com/listings/85c5b409-a153-4ab9-9f1b-b6bef092b572"
}

When you arrive into the editor. Navigate to ProjectSettings / ShaderTech.

Check each modules settings;

  1. ST Compute RP Example Settings
  2. ST Compute RP Legacy Example Settings
  3. ST Compute RP SUB Example Settings
  4. ST Niagara Example Settings

The settings should be auto-populated with the base configurations stored in the plugin’s Config folder.

If it did auto-populated you will need to import them manually. Do so by choosing “Import…” on the top right.

Import the file “BaseST_NiagaraCSIntegration.ini” for the 4 modules’ settings.

Proceed to the next section where we can try an example.

Try An Example

Navigate to ST_NiagaraCSIntegration’s content folder in the Plugins section of the content browser.

If you can’t see the Plugins section in the Content Browser (CB). Click “Settings on the right of the CB and then “Show Plugin Content”.

Navigate to Plugins / ST_NiagaraCSIntegration. Open M_TestLab.
M_TestLab is a persistent level. It includes all the other levels. M_TestLab_RP_Material_Emitting is always loaded by default. The rest are marked as blueprint-loaded.

You configure this from the Levels panel. if you don’t see it you can open it from Window / Levels.

Toggle examples by activating/deactivating sub-levels from the persistent level. You can launch each map individually, or mark them all as “always loaded” to run them all together.
Proceed to the next section where we will locate the configuration settings for our chosen loaded level.

Location The Configuration Settings

Depending on the level you chose to run in the previous section navigate to the relevant Project Settings section.
  1. M_TestLab_Niagara | ST Niagara Example Settings
  2. M_TestLab_RP_Drawing | ST Compute RP Example Settings
  3. M_TestLab_Niagara | ST Niagara Example Settings
  4. M_TestLab_RP_Emitting | ST Compute RP Example Settings
  5. M_TestLab_RP_Legacy_Emitting | ST Compute RP Legacy Example Settings
  6. M_TestLab_RP_Material_Emitting | ST Compute RP SUB Example Settings
Proceed to the next section where we can configure how the boids move around.

Location The Configuration Settings

Change the quantity of boids and how they interact with each other.
Go ahead and configure the relevant settings.

Boid Constant Parameters values are accessed once when the compute shader is initialised and cannot be modified in runtime.

Boid Dynamic Parameters values can be modified in runtime.

Play In Editor.

Mission Complete!

License

MIT

If you have pulled the GitHub repo, this project is licensed under the MIT License. See the LICENSE file for details.

Creative Commons Attribution (CC BY 4.0)

If you have purchased this free plugin on the Fab marketplace, this project is licensed under the Attribution 4.0 International deed. See the LICENSE deed for details.

Release Notes

Version 1.2 (23/05/2025)

Improvement | General Refactor
Improvement | Fab marketplace prep
Supports: UE 5.5.x
Supports: UE 5.6.x

Version 1.1 (13/11/2024)

Improvement | General Refactor
Bug FIx | Correctly dispose of buffers
Feature | Structured Buffer -> Material
Supports: UE 5.5.x (13/11/2024)
Supports: UE 5.4.x (01/09/2024)

Version 1.0 (11/05/2024)

The beginning of Time.
Supports: UE 5.3.x