Niagara UI Renderer | Free Plugin for UE4/UE5

Hello! I just wanted to say that I absolutely adore this plugin, it’s exactly what I was looking for! One quick question: I’m on a small team that’s developing a game for both Windows and Mac. Everyone on the team using Windows computers has had no issue with getting the plugin working and downloaded from the Marketplace. However, one of our sole engineers that’s working on Mac has not been able to get it up and running. We’re using UE5.2 for the engine and the game itself uses C++ and Blueprints (but more so blueprints, if that matters). Anyway, do you have any idea what might be the case? The engine seems to claim that it can’t locate the plugin at all…

1 Like

Hi,

this plugin officially only supports Windows and Android platforms, since they’re the only ones that I can test and verify that everything works. You can make it run on other platforms too (like Mac), but you have to compile the plugin yourself. I’ve heard from many users that it works just fine.

In order to compile the plugin, you need to download the source code from GitHub, and copy the plugin into your project. After that edit the “NiagaraUIRenderer.uplugin” file. Add your desired platforms into the “SupportedTargetPlatforms” and “PlatformAllowList” arrays, and recompile the project (for Mac / iOS from xcode).

If your project is blueprint only you need to do this compilation in a second C++ project.

(Optional if your project includes C++, required if it’s Blueprint only)
After you have the project running (on Mac), go into the plugins window, click “Package” under the Niagara UI Renderer plugin, and select a target empty folder. This will compile all the versions of the plugin, and will create a plugin folder that you can use in your project. This will eliminate the need for everyone to download the plugin separately and will work on all the platforms.

Hopefully this helps.
Cheers!

I am on Mac for this particular project, so this answers my issue from above, thank you! I will verify if it works and let you know.

I’m glad to see this reply from you at this time, before this I’ve successfully installed the project to my Mac computer in the same way as you mentioned, cheers!

MyProject.uproject

NiagaraUIRenderer.uplugin

I have a problem.

“Niagara particles are not visible on Xbox or PS5 platforms.”

Hi, it looks like you’ve downloaded the plugin from Unreal Marketplace which contains only precompiled binaries for windows and android. When compiling for non officially supported platforms it’s recommended to download the plugin from GitHub, install it to the game’s plugin directory, add additional platforms and recompile it. Hopefully this will solve your issue. Cheers!

Hi! First of all awesome job here, you really did something the Unreal Team should consider integrating somehow <3
I watched your videos and you mention in the comments that we could come to this thread with questions until you get traction for a Discord, so here I am :slight_smile: I’m also an Unreal newbie so if I am mixing things sorry in advance.
I don’t fully understand the widget Hierarchy needed. For what I’ve tested, the particles cannot render outside the root widget (they get clamped), so do I really need a full screen canvas for every widget whose particles can “overflow”?
Particle positions seem to work only in local space, so moving widgets can’t really own the particle system? I wanted to have different draggable objects, but your mouse trail is also an example I guess.
Finally, on the more technical side. I wanted to do texture sampling to obtain some kind of “break” effect so each particle would have the color/texture where it spawns, but that seems exclusive for GPU sim. Do you think there’s any kind of compromise solution for situations like this one?
Thanks a lot in advance!!

Hi, thank you for the kind words. I don’t think this plugin will be integrated into Unreal. It’s pretty inefficient (because of the limited access to the engine), and I’m sure if Epic wanted this functionality they would make something way deeper integrated and more performant.

The particles are not bound to the Niagara UI Widget, and they should render outside of it without any issues. I’m not sure what you mean by needing a full screen canvas for every widget, you certainly shouldn’t need those. The only way they can be clipped is if one of the parent widgets has Clipping enabled.

This plugin supports both local and world space particles depending on the emitter settings. I recommend taking a look at the “Trailing Blaze” system in the demo where the main flame effect is in local space while the trail embers are in the world space.

Because of the technical limitations the plugin only supports CPU simulations, which means you cannot simply sample a texture. Doing anything like this will require a custom implementation that will vary on the specific use case, so it’s hard to give advice without knowing exactly what the desired effect should be. The best approach would be to find a way of creating the effect without texture sampling, e.g. with math.

Cheers!

UPDATED TO UE 5.5:

Hi!

The plugin has been updated to support Unreal Engine 5.5! The new version also includes fixes for unexpected behavior for widgets rotated more than 90 degrees as well as color and opacity multiplier properties that are animatable from a sequence, allowing for easier customization of the particle systems. The update will be available on FAB after they finish processing it, but you can grab it now from GitHub.

Cheers!


Niagara UI Renderer v1.1.8:

Download 5.5:

UE 5.5 Android build failed

Log started at 11/13/2024 21:18:42 (2024-11-13T14:18:42Z)
No config file at C:\ProgramData\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
No config file at C:\Users\kiril\AppData\Local\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
No config file at C:\Users\kiril\OneDrive\Документы\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
Configuration will be read from:
C:\Users\kiril\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml
Log file: C:\Users\kiril\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+UE_5.5\UBA-Test5_5-Android-Shipping_2.txt

Setting temp directory to ‘C:\Users\kiril\AppData\Local\Temp\UnrealBuildTool\aa79499d’
Registering build platform: UnrealBuildTool.AndroidPlatformFactory
Android Installed SDK(s): MinVersion_Sdk=r25b, MaxVersion_Sdk=r27, CurrentVersion_Sdk=r25b, Version_AutoSdk=r25b, CurrentVersion_AutoSdk=
Registering build platform: Android - buildable: True
Registering build platform: UnrealBuildTool.IOSPlatformFactory
Registering build platform: UnrealBuildTool.LinuxPlatformFactory
Registering build platform: UnrealBuildTool.MacPlatformFactory
Registering build platform: UnrealBuildTool.TVOSPlatformFactory
Registering build platform: UnrealBuildTool.WindowsPlatformFactory
Found Windows 10 SDK root at C:\Program Files (x86)\Windows Kits\10 (1)
Found Windows 10 SDK root at C:\Program Files (x86)\Windows Kits\10 (2)
Found Windows 10 SDK version 10.0.18362.0 at C:\Program Files (x86)\Windows Kits\10
Found Universal CRT version 10.0.18362.0 at C:\Program Files (x86)\Windows Kits\10
Unable to find valid SDK(s) for Win64:
Found Sdk Version=10.0.18362.0, MinRequired=10.0.19041.0, MaxRequired=10.9.99999.0.
Found AutoSdk Version, Required=10.0.22621.0.
Registering build platform: Win64 - buildable: False
Registering build platform: UnrealBuildTool.VisionOSPlatformFactory
Command line: C:\UE_5.5\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll Test5_5 Android Shipping -Project=C:\Test5_5\Test5_5.uproject -Manifest=C:\Test5_5\Intermediate\Build\Manifest.xml -remoteini=C:\Test5_5 -skipdeploy -distribution “-log=C:\Users\kiril\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+UE_5.5\UBA-Test5_5-Android-Shipping_2.txt”
Ignoring plugin ‘ModelingToolsEditorMode’ for platform/configuration
Ignoring plugin ‘GooglePAD’ for platform/configuration
Ignoring plugin ‘AndroidFileServer’ for platform/configuration
Ignoring plugin ‘ContentBrowserFileDataSource’ for platform/configuration
Ignoring plugin ‘PixWinPlugin’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘XCodeSourceCodeAccess’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘ContentBrowserFileDataSource’ for platform/configuration
Ignoring plugin ‘MeshModelingToolset’ for platform/configuration
Ignoring plugin ‘MeshModelingToolsetExp’ for platform/configuration
Ignoring plugin ‘Interchange’ due to unsupported platform
Ignoring plugin ‘ModelingToolsEditorMode’ for platform/configuration
Ignoring plugin ‘PlanarCut’ for platform/configuration
Ignoring plugin ‘MeshModelingToolsetExp’ for platform/configuration
Ignoring plugin ‘BaseCharacterFXEditor’ for platform/configuration
Ignoring plugin ‘LowLevelNetTrace’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘NFORDenoise’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘InterchangeEditor’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘Interchange’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘MediaPlayerEditor’ for platform/configuration
Ignoring plugin ‘MediaPlayerEditor’ for platform/configuration
Ignoring plugin ‘MeshModelingToolset’ for platform/configuration
Ignoring plugin ‘InterchangeEditor’ for platform/configuration
Ignoring plugin ‘NNEDenoiser’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘OnlineSubsystemIOS’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘MsQuic’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘XInputDevice’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘Interchange’ for platform/configuration
Ignoring plugin ‘UbaController’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘PythonScriptPlugin’ for platform/configuration
Ignoring plugin ‘PixWinPlugin’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘XCodeSourceCodeAccess’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘ContentBrowserFileDataSource’ for platform/configuration
Ignoring plugin ‘MeshModelingToolset’ for platform/configuration
Ignoring plugin ‘MeshModelingToolsetExp’ for platform/configuration
Ignoring plugin ‘Interchange’ due to unsupported platform
Ignoring plugin ‘ModelingToolsEditorMode’ for platform/configuration
Ignoring plugin ‘PlanarCut’ for platform/configuration
Ignoring plugin ‘MeshModelingToolsetExp’ for platform/configuration
Ignoring plugin ‘BaseCharacterFXEditor’ for platform/configuration
Ignoring plugin ‘ContentBrowserFileDataSource’ for platform/configuration
Ignoring plugin ‘LowLevelNetTrace’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘NFORDenoise’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘InterchangeEditor’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘Interchange’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘MediaPlayerEditor’ for platform/configuration
Ignoring plugin ‘MediaPlayerEditor’ for platform/configuration
Ignoring plugin ‘MeshModelingToolset’ for platform/configuration
Ignoring plugin ‘InterchangeEditor’ for platform/configuration
Ignoring plugin ‘NNEDenoiser’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘OnlineSubsystemIOS’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘MsQuic’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘XInputDevice’ due to unsupported platform in plugin descriptor
Ignoring plugin ‘Interchange’ for platform/configuration
Ignoring plugin ‘UbaController’ due to unsupported platform in plugin descriptor
Creating makefile for Test5_5 (no existing makefile)
Skipping C:\UE_5.5\Engine\Intermediate\Build\BuildRules\UE5Rules.dll: File is installed
Skipping C:\UE_5.5\Engine\Intermediate\Build\BuildRules\UE5ProgramRules.dll: File is installed
Building UnrealGame - Test5_5 - Android - Shipping
Total execution time: 1.41 seconds
Expecting to find a type to be declared in a module rules named ‘NiagaraUIRenderer’ in ‘UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’. This type must derive from the ‘ModuleRules’ type defined by UnrealBuildTool.
CompilationResultException: Expecting to find a type to be declared in a module rules named ‘NiagaraUIRenderer’ in ‘UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’. This type must derive from the ‘ModuleRules’ type defined by UnrealBuildTool.
at UnrealBuildTool.RulesAssembly.CreateModuleRules(String ModuleName, ReadOnlyTargetRules Target, String ReferenceChain, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:line 515
at UnrealBuildTool.RulesAssembly.CreateModuleRules(String ModuleName, ReadOnlyTargetRules Target, String ReferenceChain, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:line 466
at UnrealBuildTool.RulesAssembly.CreateModuleRules(String ModuleName, ReadOnlyTargetRules Target, String ReferenceChain, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\System\RulesAssembly.cs:line 466
at UnrealBuildTool.UEBuildTarget.CreateModuleRulesAndSetDefaults(String ModuleName, String ReferenceChain, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 5758
at UnrealBuildTool.UEBuildTarget.FindOrCreateModuleByName(String ModuleName, String ReferenceChain, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 5882
at UnrealBuildTool.UEBuildTarget.FindOrCreateCppModuleByName(String ModuleName, String ReferenceChain, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 6016
at UnrealBuildTool.UEBuildTarget.AddPlugin(PluginReferenceDescriptor Reference, String ReferenceChain, String ExcludeFolders, Dictionary2 NameToInstance, Dictionary2 NameToInfos, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 4996
at UnrealBuildTool.UEBuildTarget.SetupPlugins(ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 4746
at UnrealBuildTool.UEBuildTarget.PreBuildSetup(ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 3682
at UnrealBuildTool.UEBuildTarget.Create(TargetDescriptor Descriptor, Boolean bSkipRulesCompile, Boolean bForceRulesCompile, Boolean bUsePrecompiled, UnrealIntermediateEnvironment IntermediateEnvironment, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 1390
at UnrealBuildTool.UEBuildTarget.Create(TargetDescriptor Descriptor, BuildConfiguration BuildConfiguration, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 1220
at UnrealBuildTool.BuildMode.CreateMakefileAsync(BuildConfiguration BuildConfiguration, TargetDescriptor TargetDescriptor, ISourceFileWorkingSet WorkingSet, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 1142
at UnrealBuildTool.BuildMode.BuildAsync(List`1 TargetDescriptors, BuildConfiguration BuildConfiguration, ISourceFileWorkingSet WorkingSet, BuildOptions Options, FileReference WriteOutdatedActionsFile, ILogger Logger, Boolean bSkipPreBuildTargets, String ActionTypeFilter) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 400
at UnrealBuildTool.BuildMode.ExecuteAsync(CommandLineArguments Arguments, ILogger Logger) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 255
at UnrealBuildTool.UnrealBuildTool.Main(String ArgumentsArray) in D:\build++UE5\Sync\Engine\Saved\CsTools\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 687
WriteFileIfChanged() wrote 0 changed files of 0 requested writes.
Timeline:

[ 0.000]
0.000
[ 1.470]

Hi,

It looks like Unreal Engine is trying to recompile the plugin when packaging a project even though I’m distributing packaged plugin which has Android platform included. I’ll have to look into why that’s happening. In the meantime you can either use the Fab version, or compile your own from GitHub. I’ve verified both of those approaches working correctly.

Cheers!