Niagara UI Renderer | Free Plugin for Unreal Engine 4

Overview

Niagara UI Renderer | Free Plugin for Unreal Engine 4

Niagara UI Plugin adds Niagara Particle System Widget that allows you to render Niagara particle systems directly into the UI. The plugin supports sprite and ribbon CPU particles. It was tested on Windows and Android, but it should work fine on other platforms too.

Demo Video:
Niagara UI Renderer Demo Video

How to install:

You have 3 options how to install plugin:

  1. Install precompiled plugin into Unreal Engine:
    Recommended if you want to use plugin across multiple projects.
    Installation Steps:
  • Download the precompiled plugin for your version of Unreal Engine
  • Extract the whole plugin folder into ....\YourEngineInstallationPath\Engine\Plugins\
  • Enable Niagara UI Renderer in your projects Plugins settings
  • Enjoy!
  1. Install precompiled plugin into your project only:
    Recommended if you want to use plugin in this project only.
    Installation Steps:
  • Download the precompiled plugin for your version of Unreal Engine
  • Extract the whole plugin folder into ....\YourProjectPath\Plugins\
  • Enable Niagara UI Renderer in your projects Plugins settings
  • Enjoy!
  1. Compile your own version from GitHub:
    Recommended if you're Unreal Engine God.
    Installation Steps:
  • Download the plugin source from the GitHub repository
  • Copy the plugin into your plugins folder
  • Regenerate Visual Studio project files
  • Recompile
  • Enable Niagara UI Renderer in your projects Plugins settings
  • Enjoy!

How to use:

  1. Create your Niagara particle system

  2. Because Unreal cannot render "normal" particle materials as UI elements we'll need to create a version of each particle material with "User Interface" material domain. We'll also need to swap out some nodes. Use Vertex Color node instead of Particle Color node. Usual particle parameters such as Particle Radius, Particle Random won't be available for UI particle materials. For sprites only you can access Dynamic Parameter R and G data from Texture Coordinate with coordinate Index 1.

  3. Add Niagara System Widget into your widget (you can find it in the widget palette under Niagara category)

  4. Select your Niagara System in the Details tab

  5. You still won't be able to see your particles, because we need to apply the newly created UI material. There are two ways we can to that: You can either set the material directly into your Particle System renderer. This will result in particle rendering correctly in UI, but it will make it render incorrectly in the Niagara preview and in the world. To avoid that, you can use Material Remap List on the widget itself. Just add new element into it, select the original particle material on the left, and select the newly created UI material on the right. You can do this for as many materials as you want. Each material on the left will get automatically remapped to the one on the right when rendering UI. This way you can still see the correct preview of the particle system, use the particle in the world and use it as a UI particle system!

  6. You can choose if you want the particle system to auto activate, or you can activate it with blueprints.

  7. Your UI particle is set up and ready to go! You can animate it, activate it on button press or do whatever else you want!

For more information and images please visit Unreal Forum post

Comments
  • crash in Game

    crash in Game

    0x00007ff6579b32a1 UObjectBase::IsValidLowLevel() [UnrealEngine\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectBase.cpp:290] 0x00007ff6566393c5 SNiagaraUISystemWidget::CreateSlateMaterialBrush() [Plugins\UIPlugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\SNiagaraUISystemWidget.cpp:79] 0x00007ff656635a58 SNiagaraUISystemWidget::AddRenderData() [Plugins\UIPlugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\SNiagaraUISystemWidget.cpp:60] 0x00007ff656637c14 UNiagaraUIComponent::AddSpriteRendererData() [Plugins\UIPlugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\NiagaraUIComponent.cpp:175] 0x00007ff65663b076 UNiagaraUIComponent::RenderUI() [Plugins\UIPlugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\NiagaraUIComponent.cpp:78] 0x00007ff65663a2d0 SNiagaraUISystemWidget::OnPaint() [Plugins\UIPlugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\SNiagaraUISystemWidget.cpp:42] 0x00007ff657bfd06c SWidget::Paint() [UnrealEngine\Engine\Source\Runtime\SlateCore\Private\Widgets\SWidget.cpp:1393] 0x00007ff657e57b55 SBox::OnPaint() [UnrealEngine\Engine\Source\Runtime\Slate\Private\Widgets\Layout\SBox.cpp:293]

    opened by eaglefly628 5
  • Does not Compile in 5.1 (Not Really an Issue, just a request)

    Does not Compile in 5.1 (Not Really an Issue, just a request)

    There are a few issues with trying to compile in 5.1. This is the only plugin at this point were having issues with you trying to go to 5.1. Might you have already tested this and possibly have a fix? :D

    If not, may I request of you, given you have some free time to do so, update this to 5.1 please?

    Thank you, Darinius

    opened by jessy5765 2
  • Color Error in Ribbon ParticleSystem

    Color Error in Ribbon ParticleSystem

    When a color curve is used in Niagara particle system, we just see the wrong color caused by a little mistake in NiagaraUIComponent.cpp(line 424). image Pls use CurrentDataIndex instead to make the color right.

    opened by NeverStopMata 1
  • Does not Render with Slate Global Invalidation

    Does not Render with Slate Global Invalidation

    With Slate Global Invalidation enabled, NiagaraWidgets do not properly render. They are being cached and never "invalidated" and they are not volatile. I don't know very much about the Niagara rendering system, but it seems likely that these widgets should just be marked volatile.

    Note: This cannot be reproduced in the "Selected Viewport" mode, as that seems to have Global Invalidation disabled always. You need to run the game in a "New Editor Window (PIE)" and ensure that global invalidation is enabled (can be done via console command: Slate.EnableGlobalInvalidation 1)

    I was seeing this is on UE5 Preview, and have not tested if UE4 is any different.

    opened by mhughson 1
  • Plugin crashes packaged builds if disabled emitters remain inside NiagaraSystem

    Plugin crashes packaged builds if disabled emitters remain inside NiagaraSystem

    Hi. I've encountered some problems with the plugin since upgrading to 5.1. Mainly it doesn't seem to work in packaged builds (shipping & development), but it works fine in editor. Previously I've used the plugin in UE 5.0 and it worked fine in both packaged builds and editor.

    Here is a stack trace with the error that i'm getting:

    Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000218
    
    Win64_Shipping!UNiagaraUIComponent::RenderUI() [...\Plugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\NiagaraUIComponent.cpp:87]
    Win64_Shipping!SNiagaraUISystemWidget::OnPaint() [...\Plugins\NiagaraUIRenderer\Source\NiagaraUIRenderer\Private\SNiagaraUISystemWidget.cpp:43]
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SConstraintCanvas::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SBox::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SOverlay::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SCompoundWidget::OnPaint()
    Win64_Shipping!SObjectWidget::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SConstraintCanvas::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SOverlay::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SBox::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SOverlay::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SPanel::PaintArrangedChildren()
    Win64_Shipping!SPanel::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SPanel::PaintArrangedChildren()
    Win64_Shipping!SPanel::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SCompoundWidget::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SCompoundWidget::OnPaint()
    Win64_Shipping!SViewport::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SPanel::PaintArrangedChildren()
    Win64_Shipping!SPanel::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SOverlay::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SCompoundWidget::OnPaint()
    Win64_Shipping!SWidget::Paint()
    Win64_Shipping!SWindow::PaintSlowPath()
    Win64_Shipping!FSlateInvalidationRoot::PaintInvalidationRoot()
    Win64_Shipping!SWindow::PaintWindow()
    Win64_Shipping!FSlateApplication::DrawWindowAndChildren()
    Win64_Shipping!FSlateApplication::PrivateDrawWindows()
    Win64_Shipping!FSlateApplication::TickAndDrawWidgets()
    Win64_Shipping!FSlateApplication::Tick()
    Win64_Shipping!FEngineLoop::Tick()
    Win64_Shipping!GuardedMain()
    Win64_Shipping!GuardedMainWrapper()
    Win64_Shipping!LaunchWindowsStartup()
    Win64_Shipping!WinMain()
    Win64_Shipping!__scrt_common_main_seh() [d:\a01\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
    kernel32
    ntdll
    

    UE version: 5.1 Plugin version: Latest (1.1.4 for UE 5.1)

    opened by CristiP97 1
  • On the UE5 branch you use GetSystemInstance_Unsafe() (Which will be deprecated)

    On the UE5 branch you use GetSystemInstance_Unsafe() (Which will be deprecated)

    More of a future concern and also does seem like a warning by epic devs about using that as it "exposes internals that may be concurrently accessed".

    Is there a safer more future proof way of getting the emitters?

    opened by nonlin 0
  • Does not work in shipped build with an Empty emitter template in Niagara System

    Does not work in shipped build with an Empty emitter template in Niagara System

    Hi,

    We observed a curious issue at the company I'm working for, I saw it mentioned once in the UE forums but without any details or resolution.

    The FX does not work in shipped build but shows up just fine in preview/PIE when using an empty template emitter in the Niagara System asset. I dont know exactly what changes between the different templates, but it worked again when I used a Fountain template which I adjusted to the config we had in the empty template.

    UE version: 4.27.2 NiagaraUI version: 1.1.0

    opened by nado 0
  • Separate the plugin repository from the project repository

    Separate the plugin repository from the project repository

    Make a repository just for the project and use this repository for the plugin, then add the plugin repository as a git submodule on the project repository. This will make it easier to add the plugin to other projects as a git submodule and keep the plugin updated.

    Example of a project doing this: https://github.com/sinbad/SPUDExamples https://github.com/sinbad/SPUD

    opened by FabricioMSantos 0
Owner
null
Unreal Engine Plugin to wrap Nuitrack SDK ( skeleton tracking solution by 3DiVi )

Nuitrack for Unreal Engine Unreal Engine plugin to bridge Nuitrack. Nuitrack is a middleware to provide 3d skeleton tracking solution using a depth se

Ayumu Nagamatsu 11 Nov 10, 2022
Unreal Engine 4 plugin for SteamVR passthrough camera support

SteamVR Passthrough Plugin This Unreal Engine 4 plugin adds SteamVR passthrough camera support using the OpenVR TrackedCamera API. Example project: ht

null 10 Dec 5, 2022
Unreal Engine OpenDRIVE plugin

Unreal Engine OpenDRIVE plugin This plugin allows you to manipulate your OpenDRIVE road network in Unreal Engine. It is built around esmini's RoadMana

Bertrand Richard 64 Dec 14, 2022
A port of Substance Unreal Engine plugin for UE5.

SubstanceForUE5 A port of Substance Unreal Engine plugin for UE5. All rights to this code belong to Allegorithmic / Adobe. I merely wanted to help dev

null 14 Apr 29, 2022
Unreal Engine 4 plugin for Yodo1 MAS (Managed Ad Services) integration. Used for ad monetization of games.

Unofficial Yodo MAS SDK for Unreal Engine 4 Disclaimer: this plugin is in no way associated with Yodo1, this is just a wrapper on top of their officia

Nineva Studios 3 Apr 9, 2022
HypeRate.io Unreal Engine Plugin

Unofficial HypeRate Unreal Engine Plugin V 1.0 Installation Github Download latest version from Releases tab. Unzip it into your {project_dir}/Plugins

HypeRate 3 May 15, 2022
Plugin to generate landscapes and oceans from the Unreal editor shader graph. Supports collisions, assets spawning, landscape layers. UE 4.26 / 4.27 / 5.0

Procedural Landscapes and Oceans as a plugin for unreal engine 4.26/4.27/5.0 using Editor Shader Graph Using the Editor Shader Graph, creating landsca

Maxime Dupart 2 Dec 12, 2022
Xelu's Controllers & Keyboard Prompts as an Unreal Plugin for programmatic use (cpp / bp)

ue-xelu-icons Xelu's FREE Controllers & Keyboard Prompts as an Unreal Plugin for programmatic use (cpp / bp) This plugin exposes a Blueprint Library w

Mickael Daniel 9 Dec 3, 2022
A simple Unreal 5 plugin with demo content that shows how audio DSP can be implemented as Metasound, SourceEffect and SubmixEffect

A simple Unreal 5 plugin with demo content that shows how audio DSP can be implemented as Metasound, SourceEffect and SubmixEffect. The intention is to use it as a template to create more complex audio DSP effects.

Alex Perez San Elias 17 Jan 2, 2023
Engine-3D is a 3D-Graphics Renderer built from scratch in C++

Engine3D Engine-3D is a 3D-Graphics Renderer built from scratch in C++, as an Undergraduate Computer Engineering Project for 5th Semester, assigned by

Chirag Lamsal 3 Oct 24, 2022
Full source code for WarriOrb, a Dark-Souls like action platformer - using Unreal Engine 4

WarriOrb source code WarriOrb is a hardcore action platformer where you play as a demon who is trapped in an unlikely body. The game mixes the difficu

Not Yet 247 Dec 30, 2022
Design-agnostic node editor for scripting game’s flow in Unreal Engine

Flow plug-in for Unreal Engine provides a graph editor tailored for scripting flow of events in virtual worlds. It's based on a decade of experie

Moth Cocoon 555 Jan 4, 2023
Third-person survival game for Unreal Engine 4 made entirely in C++.

Third-person survival game for Unreal Engine 4 made entirely in C++. Originally built as a 6 section tutorial series, now available as open-source C++ sample project.

Tom Looman 2.8k Dec 30, 2022
Simple CSV localization system for Unreal Engine 4

BYG Localization We wanted to support fan localization for Industries of Titan and found that Unreal's built-in localization system was not exactly wh

Brace Yourself Games 56 Dec 8, 2022
Edycja PianoFall zrobiona na Unreal Engine

PianoFall - Unreal Engine Edition Edycja PianoFall zrobiona na Unreal Engine (mój pierwszy projekt w UE) Obsługa Po uruchomieniu programu i wciśnięciu

Nadwey 4 Jun 17, 2021
Lambda support for Unreal Engine dynamic delegates

DynamicLambda Lambda support for Unreal Engine dynamic delegates This is experimental feature. Now only parametless lambdas are supported To see more

Andrew Derkach 28 Nov 29, 2022
Dialogue scripting language for Unreal Engine

Supertalk Welcome to Supertalk! This is a simple dialogue scripting language for Unreal Engine created due to frustration with visual dialogue tree wo

Sam Bloomberg 41 Nov 18, 2022
An Unreal Engine 4 Dungeon Generator

DungeonGenerator A (hopefully) handy Unreal Engine 4 Dungeon Generator Read the full docs here: https://github.com/orfeasel/DungeonGenerator/blob/main

Orfeas Eleftheriou 69 Dec 28, 2022
Procedural Mesh Modeling Toolkit for Unreal Engine Artists

OpenLand Mesh Procedural Mesh Modeling Toolkit for Unreal Engine Artists. Installation Get it via the marketplace ??️ For non-commercial projects, you

GDi4K 26 Nov 19, 2022