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…
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 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, Dictionary
2 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!
Hello! How do we set niagara system variables on this widget? I saw you can expose dynamic parameters using texcoord(1), but how do we change the system variables from the widget blueprint?
Adding this function works! However, it only affects the system, and not existing sprite’s dynamic params. If you want to change material params per-particle, use the dynamic params remapped to texcoord(1). If you want to change all particles w/ a dynamat, just update the remap array with a created dynamat.
NiagaraSystemWidget.h
UFUNCTION(BlueprintCallable, Category = "Niagara UI Renderer")
void SetNiagaraUIFloatVariable(FName ParameterName, float Value);
NiagaraSystemWidget.cpp
void UNiagaraSystemWidget::SetNiagaraUIFloatVariable(FName ParameterName, float Value)
{
NiagaraComponent->SetFloatParameter(ParameterName, Value);
}
Hi, you can use the GetNiagaraComponent() function on the widget which returns a standard UNiagaraComponent on which you can call all the usual functions as SetNiagaraVariable, so you don’t need to expose them one by one. Cheers!
Not sure I understand (or agree). I was trying to set these things in BP, and exposed them from CPP. In CPP GetNiagaraComponent() is definitely accessible. I wanted them in BP
The GetNiagaraComponent() function is exposed to blueprints as well as C++ so there’s no need to expose any functions manually in C++ - you can just call GetNiagaraComponent() in blueprint and call all of the Niagara functions directly. Exposing them through C++ won’t hurt anything, but it’s not necessary and adds additional point of maintenance for keeping parity with all the component functions. It’s also consistent with Unreal’s Niagara Actor implementation where if you want call any of the functions you need to get the component first and call them on it instead of the actor.
HI,
Does the plugin support custom alignment of sprite renderer? I make something like this:
but in wbp alignment it doesn’t work:
thanks
Hi, thank you for reporting the issue, indeed the support for custom aligned sprites was missing from the plugin. I’ve pushed the changes required for it to GitHub repo, so if you have a C++ project you can download and compile it from there. If not, you can use a workaround in the old version of using the “Velocity Aligned” alignment mode and changing the “Velocity Binding” to “SpriteAlignment,” which will achieve the same result. Cheers!
Additionally, I’ve found that the problem occurs when the game is paused, and I’m using the “Update Tick when Paused” node
Hello!
I’m using the Niagara UI Renderer plugin to display particles in the user interface. I’ve encountered an issue: despite setting Warmup Time and Warmup Tick Count in the Niagara system, the particles don’t prewarm properly when rendered in the UI. As a result, when the UI element appears, the particles start from zero, causing unwanted visual effects.
I’ve tried activating the system in advance and hiding it until needed, but this approach isn’t always convenient. I’ve also ensured that the materials are adapted for UI and that I’m using CPU-simulated particles.
Is there a way to correctly implement particle prewarming in the UI using Niagara UI Renderer? Perhaps I’m missing some settings, or there’s a workaround to address this issue.
Any advice or recommendations would be greatly appreciated!