Imaginez une pluie de braises qui retombe sur un champ de bataille, chaque particule évitant le relief du sol au passage. Dans Unreal Engine, ce comportement se construit dans Niagara. Dans Unity, la même intention passe par VFX Graph. Les deux font des particules temps réel, et pourtant elles ne partagent presque aucun choix de conception : ni l'endroit où elles calculent, ni la façon dont vous les assemblez, ni le terrain sur lequel elles tournent.
Niagara (Unreal Engine 5.8) organise ses effets en système, émetteurs et modules, et laisse chaque émetteur choisir le CPU ou le GPU. VFX Graph (package 17.x sous Unity 6.4) assemble des Blocks en Contexts et simule exclusivement sur GPU. Le choix entre les deux dépend du terrain visé, pas d'un vainqueur universel.
Niagara : trois étages, et le choix du CPU ou du GPU#
Sous Unreal Engine 5.8, un effet Niagara se lit comme un emboîtement à trois niveaux. Le système chapeaute tout. À l'intérieur, des émetteurs décident où naissent les particules, comment elles vieillissent, comment elles se comportent et à quoi elles ressemblent. Et dans chaque émetteur, des modules, la brique de base, s'empilent en pile (« stack ») pour composer le comportement final.
Le détail qui change tout, pour qui vient d'un moteur où le GPU est la seule option : dans Niagara, chaque émetteur indique lui-même s'il tourne sur CPU ou sur GPU, selon la documentation Epic. Ce n'est pas un réglage global du système entier, c'est un choix local, émetteur par émetteur, visible dans les détails de l'asset.
Pour prototyper vite sans toucher au graphe visuel principal, Epic propose aussi le Scratch Pad : des modules locaux, écrits avec les graphes de script visuel, limités à l'émetteur ou au système qui les crée. Vous pouvez ensuite les exporter en asset séparé s'ils méritent de survivre au-delà du prototype. C'est exactement le genre d'outil qui vous évite de casser un système complet pour tester une seule idée. Si Niagara vous intéresse au-delà des particules, le point sur Unreal Engine 5.7 et 5.8, MegaLights et Nanite Foliage situe ces effets dans le reste du pipeline de rendu.
VFX Graph : Block, Context, et un choix imposé par l'architecture#
Unity, de son côté, construit ses effets autrement. Un Block agit sur les propriétés d'un effet à partir de ses entrées ; plusieurs Blocks liés forment un Context, selon le manuel officiel du package 17.0.4. Pas de niveau intermédiaire équivalent à l'émetteur Niagara, la logique s'empile directement dans le graphe de Contexts.
La différence structurante, elle, ne se voit pas dans l'organisation des nodes mais dans le moteur qui les exécute : « The Visual Effect Graph simulates particle behavior on the GPU », précise le manuel Unity 6.4. Pas d'option CPU. C'est un choix d'architecture assumé, pas une limitation qu'un futur patch viendrait lever.
Ce choix a un prix en prérequis matériel : compute shaders et Shader Storage Buffer Objects (SSBO) obligatoires, et l'incompatibilité pure et simple avec OpenGL ES, d'après les prérequis officiels du package 17.2.0. Avant de construire un effet complexe, vérifiez que votre cible de rendu les supporte. Une scène qui tourne parfaitement sur votre poste de développement peut très bien planter sur un appareil qui n'a pas ces briques. Ce même arbitrage GPU revient d'ailleurs dans l'actualité du moteur, avec CoreCLR et Entities annoncés à la GDC pour Unity 6.4.
Ce que les deux éditeurs disent, chacun de leur côté, sur le volume#
Voici le tableau que le SERP ne construit jamais : les deux architectures posées côte à côte, avec leurs versions exactes.
| Critère | Niagara (Unreal Engine 5.8) | VFX Graph (package 17.x, Unity 6.4) |
|---|---|---|
| Architecture | Système → émetteurs → modules | Block → Context |
| Simulation | CPU ou GPU, au choix par émetteur | GPU exclusivement |
| Ordre de grandeur officiel | Le CPU « can cause performance issues » dès les dizaines de milliers de particules ; le GPU cible les « millions » (doc GPU Sprite Effect) | « Thousands » pour le système intégré, « Millions » pour VFX Graph (tableau officiel Unity) |
| Prérequis matériel documentés | Non spécifiés dans les pages officielles consultées | Compute shaders et SSBO obligatoires, OpenGL ES exclu (package 17.2.0) |
| Pipelines de rendu | Non restreint dans les pages officielles consultées | HDRP hors preview, URP toujours en preview, mobile non supporté (package 17.2.0) |
Un point à ne pas confondre en lisant ce tableau : la ligne « Millions » de VFX Graph vient d'un comparatif Unity qui oppose son propre système intégré à son propre VFX Graph. Ce n'est pas une mesure face à Niagara. Unity ne compare pas VFX Graph à Niagara, et Epic ne publie pas de comparatif chiffré face à Unity. Les deux ordres de grandeur qualitatifs (« milliers » contre « millions ») viennent de deux documents distincts, sur deux échelles distinctes, et je ne les convertirais pas en chiffres précis même si ça arrangerait la mise en page.
Collision, données externes, maillage animé : les mêmes besoins, deux chemins#
Sur le terrain pratique, les deux moteurs répondent aux mêmes questions avec des outils différents. Tout ce qui suit décrit ce qui est documenté pour Unreal Engine 5.8 d'un côté, pour le package VFX Graph 17.x sous Unity 6.4 de l'autre : sur ce terrain-là, une capacité sans numéro de version devient fausse en silence à la sortie suivante.
Collision. Niagara gère la collision via un module dédié, avec en plus une fonction « GPU Ray Tracing Collisions » encore marquée expérimentale par Epic (la page elle-même est signalée incomplète, donc je reste prudente sur les détails de fonctionnement). VFX Graph propose des Blocks séparés : Collide with Depth Buffer, rapide mais approximatif, utile pour des étincelles ou de la pluie où la précision compte peu ; et Collide with Signed Distance Field, plus précis, qui exige un asset SDF généré en dehors du moteur.
Échange de données avec le jeu. Niagara communique dans les deux sens via les Data Channels, un flux qui laisse le code de jeu et les systèmes Niagara s'écrire mutuellement. VFX Graph lit des données préparées à l'avance avec le Point Cache : des points et leurs attributs, bakés dans des textures, que l'opérateur dédié extrait ensuite.
Maillage squelettique animé. Envie de faire naître des particules sur un personnage qui bouge ? Niagara propose une Data Interface dédiée, capable d'échantillonner un maillage squelettique par os, socket, sommet ou triangle. VFX Graph répond avec l'opérateur Sample Skinned Mesh, combiné au Block Set Position (Skinned Mesh), à condition que le maillage soit marqué « readable » : sans quoi l'opérateur renvoie tout simplement zéro. Ce besoin d'un maillage propre en amont rejoint ce que je répète dans mon pipeline de modélisation 3D pour le jeu vidéo sous Blender : un asset mal préparé casse tout ce qui vient après, particules comprises.
Scripting bas niveau. Envie de sortir du visuel pur ? VFX Graph propose un Block Custom HLSL : une fonction qui lit et écrit directement les attributs de particule, avec des #include si besoin. Niagara dispose lui aussi, semble-t-il, d'un nœud équivalent dans son éditeur de script, mais je n'ai pas trouvé de citation officielle assez précise sur son fonctionnement pour l'affirmer avec la même certitude que pour VFX Graph.
Le terrain qui décide, pas un classement#
J'ai hésité longtemps avant d'écrire ce comparatif sans conclusion tranchée. Mais les deux moteurs ne visent pas le même terrain, et forcer un verdict serait mentir par simplification.
Si votre cible inclut du mobile, ou un rendu URP qui doit rester stable, VFX Graph ferme des portes que sa propre documentation assume, celle du package 17.2.0 : hors preview uniquement sur HDRP, URP encore en preview, mobile non supporté. Niagara, avec son choix CPU ou GPU par émetteur, garde une souplesse que VFX Graph n'a pas dans sa conception même : sur un vieux poste sans compute shaders, un émetteur Niagara CPU tourne quand même, quitte à plafonner en volume.
À l'inverse, si vous visez du lourd sur un poste qui tient la charge GPU, la promesse de VFX Graph (« Millions » face aux « Thousands » de l'ancien système Unity) parle d'elle-même, même si elle ne se compare pas directement à Niagara. Le choix n'est pas technique dans l'absolu, il est technique par rapport à votre cible de plateforme. C'est ce que le SERP oublie de dire quand il compare Unity 6 et Unreal Engine 5 sur dix critères à la fois sans jamais s'arrêter sur les particules.
Un dernier repère avant de refermer ce comparatif : dans les deux moteurs, l'architecture visible dans l'éditeur (système/émetteurs/modules d'un côté, Blocks/Contexts de l'autre) est celle que vous manipulerez au quotidien. C'est ce vocabulaire-là qu'il faut apprendre en premier, et il ne se transpose pas d'un moteur à l'autre. Pour approfondir la partie rendu qui accompagne souvent ces effets, le comparatif Cycles, Eevee et Octane et l'explication du ray tracing et du path tracing creusent la suite logique de ce sujet.
FAQ#
Niagara tourne-t-il uniquement sur GPU, comme VFX Graph ?#
Non. Selon la documentation Epic, chaque émetteur Niagara choisit lui-même s'il tourne sur CPU ou sur GPU. VFX Graph, à l'inverse, simule exclusivement sur GPU d'après le manuel Unity 6.4 : c'est un choix d'architecture, pas un réglage optionnel.
VFX Graph fonctionne-t-il sur mobile ?#
Pas selon les prérequis officiels du package 17.2.0 : le mobile n'est pas supporté, l'URP reste toujours en preview, et seul le HDRP est sorti de preview. VFX Graph exige aussi des compute shaders et des Shader Storage Buffer Objects, et exclut explicitement OpenGL ES.
VFX Graph gère-t-il vraiment plus de particules que Niagara ?#
La documentation Unity compare VFX Graph à son propre ancien système intégré (« Thousands » contre « Millions »), pas directement à Niagara. La documentation Epic parle elle aussi de « millions » de particules côté GPU pour Niagara. Aucun des deux éditeurs ne publie de comparatif chiffré tête-à-tête entre les deux moteurs.
Peut-on faire de la collision de particules dans les deux moteurs ?#
Oui, avec des outils différents. Niagara passe par un module Collision, plus une fonction GPU Ray Tracing Collisions encore expérimentale. VFX Graph propose deux Blocks distincts : Collide with Depth Buffer pour une collision rapide et approximative, et Collide with Signed Distance Field pour une collision précise à partir d'un asset SDF.
Peut-on faire naître des particules sur un personnage animé ?#
Oui, dans les deux systèmes. Niagara utilise une Data Interface dédiée à l'échantillonnage de maillage squelettique (os, socket, sommet, triangle). VFX Graph utilise l'opérateur Sample Skinned Mesh combiné au Block Set Position (Skinned Mesh), à condition que le maillage soit marqué « readable ».
Sources#
- Epic Games, Overview of Niagara Effects for Unreal Engine (doc UE 5.8)
- Epic Games, How to Create a GPU Sprite Effect in Niagara for Unreal Engine
- Epic Games, Niagara Scratch Pad Modules in Unreal Engine
- Epic Games, Collisions in Niagara for Unreal Engine
- Epic Games, Niagara Data Channels Overview
- Unity Technologies, Visual Effect Graph manual (package 17.0.4)
- Unity Technologies, Visual Effect Graph System Requirements (package 17.2.0)
- Unity Technologies, Visual Effect Graph (manuel Unity 6.4)
- Unity Technologies, Choosing your particle system solution (manuel Unity 6.4)
- Unity Technologies, Point Caches in the Visual Effect Graph (package 17.0.4)





