Skip to content

UnityEQ VAT Lab

VFX Graph capture contract

EQVAT can bake VFX Graph sprite particles only when the graph exposes a CPU-visible capture stream. Unity VFX Graph particles live on the GPU, so the baker cannot read arbitrary rendered particles from a .vfx asset by itself.

Use an EQVATVFXGraphCaptureSource component beside the VisualEffect component and set Capture Mode to OutputEvents.

Each captured output event must carry these attributes:

AttributeTypePurpose
eqvat_idUInt or IntStable logical particle id. The same particle must keep the same id across frames.
positionVector3Particle position in the selected sample space.
colorVector4 or Vector3Sprite color. Vector3 becomes RGB with alpha 1.
sizeVector2 or FloatSprite width/height. Float becomes uniform size.
aliveFloat or BoolRender gate. Float values above 0 or Bool true mark the sprite alive.

The default names above match the default fields on EQVATVFXGraphCaptureSource. You can rename the fields on the component if the graph uses different attribute names, but all five concepts are required for production bakes.

  1. Add or select the VFX Graph system that owns the particle state you want to bake.
  2. Add an output event path that fires once per particle per captured frame.
  3. Write the stable id into eqvat_id. Do not use event order as identity for production; order can change when the graph changes.
  4. Write particle position, color, size, and alive into the event attributes.
  5. Add EQVATVFXGraphCaptureSource to the same GameObject or a nearby bridge object.
  6. Assign the VisualEffect, set the output event filter if you use a named event, and set Particle Capacity high enough for the maximum live count.
  7. Use the Baker tab’s VFXGraphSprite mode with the capture source component, not the .vfx asset directly.

If no samples are captured, check:

  • The VisualEffect field references the intended component.
  • The VisualEffect has a VisualEffectAsset.
  • The optional output event name filter matches the graph event name.
  • The graph emits during the requested frame range and frame rate.
  • The graph writes eqvat_id, position, color, size, and alive.
  • Particle Capacity is not below the intended live particle count.

If samples are captured but an attribute is missing, the baker fails with a message naming the missing attribute and the number of affected samples.

Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.