Skip to content
Media 1 for listing NANITE NIAGARA

Description

NANITE NIAGARA C++ MULTITHREAD PLUGIN and BLUEPRINT NANITE RENDERER - V2.0.1

Adding Niagara particles to the Nanite system reduces draw calls, and may reduces shadow caching speeds/calculation times when using Lumen and Virtual Shadow Maps. Blueprint overhead increases with particle count, making C++ multi thread best for moderate to high particle counts.

This Plugin and Content provides: Blueprint, C++ and C++ multithread particle conversion functions, as learning examples of the same work done in more optimized methods.

This plugin demonstrates how to render Niagara particles as Nanite static meshes by:

1. Export particle position each frame from Niagara (GPU or CPU simulation type.)

  1. Que-up exported Niagara data into an array on the CPU (based off Niagara Callback Events.)

  2. Convert exported Niagara data into an array of transform arrays by static mesh.

  3. Update Instance Static Mesh components per static mesh asset, each CPU frame, for Nanite rendering.

  4. Optional : "Sleeping" of dead particle locations to a Instance Static Mesh, generating Mesh Distance Fields for particle collisions and piles.

EXAMPLE LEVELS are provided to demonstrate the differences in speed between Blueprints and C++ multi threaded conversions:

  1. (FASTEST) C++ MultiThread Plugin Code Conversion of exported Niagara data, with a blueprint rendering of the converted transform arrays by Nanite Instance Static Mesh per frame. Optional sleeping of dead particles to ISMs, for building piles of Nanite exported particles.

  2. (Faster than normal at Low Volume) Blueprint Code Conversion of exported Niagara data, with a Blueprint rendering of converted transforms arrays as Nanite ISMs. Optional sleeping of dead particles to ISMs, for building piles of Nanite exported particles

  3. (UE5 NORMAL PARTICLES) Non-Nanite Niagara Static Mesh Renderer for a standard baseline performance to compare against. No sleeping to ISM.

DOCUMENTATION:

-PACKAGED DEMO UE5.3 (Win x64): https://drive.google.com/file/d/1H_0C2umBEKPE_iLa0hmJHM_MU49TQ3_a/view?usp=sharing

-V2 Living Document: docs.google.com/document/d/1H95kF84rTiM6LSZFk1InAvWTDC9V6Sox27JOoTqbJpw

-Commented Blueprint and C++ Code

-DEVLOG of development: https://dev.epicgames.com/community/learning/tutorials/w6wG/unreal-engine-nanite-niagara-gpu-particle-renderer-and-rendering-of-100-000-particles-using-a-single-niagara-system-with-33-different-meshs-blueprint-and-c-code-performance-review

Thank you!

By GameDevMicah Berninghausen Linkedin

Optimization Consultant & Game Director at Aggressive Performance

@GameDevMicah on BlueSky/Twitter/Discord

Terms of Service: For use in Video Games and Virtual Production, not for tool development for public resell.

Included formats