Niagara graphs
NIRA Niagara system is a binary node graph: emitters, module stacks, renderers, parameters, simulation stages and script wiring. You normally read it by clicking through emitter after emitter in the Niagara editor. NIR writes the same asset out as line-based text: the system, its emitters, every module in stack order with its inputs, the renderers, and the script graphs node by node. NIR is for reading and review. Writing text back into the asset is planned.
What it gives you
- Diffable in version control
- An emitter tweak becomes a few readable lines you can compare between revisions. The same text is saved in asset dumps as
nir.txt, sogit log -pandgrepboth work on it. - Reviewable like code
- Module stacks read top to bottom in execution order. Each input shows a value, a linked parameter like
$User.Speed, or a nested dynamic input. You can check what an emitter does without tracing pins. - Readable for your assistant
- Your assistant gets the whole system as text in one step: emitters, stacks, renderers and script graphs. It can answer questions and reason about the effect.
- Faithful and consistent
- The live read and the
nir.txtfile use the same reader, so for one asset state they match exactly. Node types the reader doesn't know show as# unknown-nodewith a warning, so nothing is silently dropped.
What the text looks like
A system block lists exposed param values, then one emitter block
per emitter. Each module row shows its stack order and whether it is enabled. Each
input is a value, a linked $-parameter or a nested dynamic input:
system "NS_ThrusterExhaust" { param User.SpawnRate : Float = 12.0 @scope user emitter "Exhaust" { simTarget CPUSim stack ParticleSpawn { module InitializeParticle @0 enabled input Lifetime = 2.0 input Color = $User.Color module AddVelocity @1 enabled input Velocity = dynamic NoiseClamp { input Range = 0.5 } } renderer Sprite } }
Standalone scripts, simulation stages and event handlers also expand into a
graph <Usage> { ... } block, with node lines and
link From.Pin -> To.Pin wiring, so you can follow the data flow node by node.
How to ask for it
Ask what a system does. Your assistant reads the whole system as text and answers from it. Reading doesn't change the asset. More examples are on the Niagara VFX page.
You: What does NS_ThrusterExhaust spawn, and at what rate?
One CPU sprite emitter at 12 per second, with a 2s lifetime and
noise-clamped velocity.Read-only
NIR reads Niagara systems, emitters and scripts as text for review and for your assistant's context. Writing text back is planned. Positions are recorded as@(x, y)
for reference. Referenced module scripts appear as paths and are not expanded inline.