Introduction and Concepts

Welcome to VFX Editor, our new node-based visual effects engine in Lens Studio! With VFX Editor, you are in total control: from rain to magical powers to swarms of emojis, your imagination drives what’s possible.
VFX Editor builds upon similar ideas found in Material Editor, allowing you to create and share unique, customizable effects that have never been seen before. If you’re comfortable with Material Editor, you’ll find a lot of similarities here. If not, don’t worry: VFX Editor is its own powerful tool with a completely new set of capabilities to empower your creativity.
So let’s dive in!
Getting Started
The fastest way to get started with VFX is to add a Simple Emitter from the Scene Hierarchy panel.
This will import a Simple Emitter VFX Asset, create a new Scene Object and a VFX Component, and assign the Simple Emitter to the VFX Component.
VFX Assets
are the effects systems that you create, whereas VFX Components
are components which render the VFX Asset in your scene. This follows a similar pattern as Materials
and Render Mesh Visuals
.
Creating a VFX Asset
To create a VFX Asset, you have a couple options:
-
In the
Asset Browser
panel, click the+
button and typeVFX
. A list will populate with some built-in VFX assets. Click on one of them to import it into your project. -
In the
Scene Hierarchy
panel, click the+
button and typeVFX
, and select aVFX
object from the list. This will add a VFX Asset and assign it to a newVFX Component
in your scene. -
Open the Asset Library and search for VFX, or navigate to the Effects section to import a VFX asset.

Once you have a VFX Asset available in the Asset Browser, you can drag it into Scene Hierarchy to automatically create a new Scene Object and VFX Component with the asset assigned.
Editing a VFX Asset
To edit a VFX Asset, double click on the asset in the Asset Browser. This will open the asset in VFX Graph where you can change how particles move and what they look like.
See The VFX Graph section below for more information.
Built-In Assets, VFX Template Project, and Asset Library
Lens Studio comes with three built-in VFX Assets:
- VFX Empty Graph is a blank canvas to create your own custom asset from scratch and is a great place to learn how the system works, one sub-graph at a time.
- VFX Simple Emitter demonstrates a basic emitter with a few of the most commonly used sub-graphs.
- VFX Custom Mesh Emitter is similar to Simple Emitter, but it is set up to use a custom mesh for rendering instead of quads.
The VFX Template Project is an educational tool for learning VFX Editor in a semi-structured way. Here, you’ll find many different approaches to creating all sorts of effects starting with very simple emitters and progressing up to advanced techniques. Open the VFX Template Project from the Home screen, or by selecting File > New Project From Template > World > VFX
You can find many more examples on the Asset Library. These assets are more complete effects that you can add to your project. All of them are completely open for you to edit, customize, and see how they work.
The VFX Graph
The VFX Graph panel is a node graph system for authoring your own custom VFX assets. The graph system shares a lot in common with Material Editor: many of the nodes are the same, but there are some important differences that we’ll look at here.
In VFX Editor, logic flows both horizontally: left-to-right, as well as vertically: top-to-bottom. Individual nodes are connected horizontally like in Material Editor, but terminate in a vertical stack of Modify Attribute
nodes.
Containers also have their own sub-graphs that can be stacked vertically inside Containers. Inside these Container Sub-Graphs, you’ll find that they are simply setting Modify Attribute
nodes.
Container Nodes
There are four distinct stages, represented by large container nodes, where particles are modified.

The first three stages, Emit
, Initialize
, and Update
can be thought of as, collectively, the simulation part of VFX Editor. This is where particle movement and dynamics are defined.
The Emit
stage controls how many particles are in the system and how many particles should spawn on a given frame.
In the Initialize
stage, initial values are set on the particle the moment it is created.
The Update
stage is processed every frame the particle is alive. Note that the stages described so far do not render anything to the screen.
The last stage, Output
, is essentially a material applied to a two dimensional square mesh, also referred to as a “quad”. This is where you define how the particle is drawn to the screen. Instead of Modify Attribute
nodes, you use a collection of Set nodes specific to the Output container to define the material. You’ll recognize these from the Shader node in Material Editor: Vertex Position/Normal/Tangent, and Pixel Color
.
Particles
The primary difference between VFX Editor and Material Editor is that VFX Editor allows you to create and manipulate particle systems.
A particle is a piece of data that holds several attributes
. Attributes are used to describe the particle: position, velocity, size, color, etc. In VFX Editor, we are interested in both manipulating these attributes over time, and using them to create a rendering material to draw it to the screen.

Many particle attributes can be modified, and some are set by the system automatically at spawn.
Modifiable Attributes
- Position (vec3)
- Velocity (vec3)
- Life (float)
- Force (vec3)
- Mass (float)
- Color (rgba)
- Size (float)
- Matrix (mat4)
- Custom (set by the user)
Set Automatically
- Age (float)
- Delay (float)
- Seed (float)
- Index (int)
- Copy ID (int)
Getting and Setting Attributes
Particle attributes can be accessed from anywhere in the graph system by using the Particle (Get Attribute)
node. This node has a drop-down menu to select what particle attribute to get.
Modifiable particle attributes are set in the Spawn or Update containers using a Particle (Modify Attribute)
node. To add a Particle (Modify Attribute) node, open the container node list by either hovering over a container and pressing Tab on your keyboard, or click the Add button on that container. Then search for the word “modify”, and you’ll see the list filter down to show the node.
These nodes have drop-down menus to select what attribute to modify, as well as what operation to perform on that attribute: Set
(default), Add
, or Multiply
. Set replaces the selected attribute’s value with the one provided on the node’s input, while Add and Multiply will take the current value of the selected attribute and either add or multiply it with the input value.
Default Values
These defaults are applied in the Initialize
container:
- Position is set to evenly fill a grid based on the particle count
- Velocity is set to (0,0,0)
- Force is set to (0,0,0)
- Size is set to 1.0
- Mass is set to 1.0
- Life is set to 16.0 (seconds)
- Matrix is set to identity
- Emission rate is set to 16 particles per second
Whenever a Modify Attribute
node is used, it overrides the respective attribute default.
These defaults are applied in the Output
container:
- The particle position, size, and matrix attributes are incorporated into the quad vertices to move, scale and rotate them according to particle siulation data. This behavior is overridden when a
Set Vertex Position
is added to theOutput
container. - The particle color attribute is used to set the pixel color. This behavior is overridden when a
Set Pixel Color node
is added to theOutput
container.
Geometry Types & Custom Meshes
VFX Editor supports two geometry types: quads and custom meshes. By default, VFX Assets render with the Quad
geometry type, selectable under the Render Visual
>Geometry Type
section of the Output
container.
When both Mesh
is selected as a Geometry Type
and a mesh is assigned to the Custom Mesh field on the VFX Asset, the system will render particles using the assigned mesh. Refer to the Custom Mesh Emitter
built-in asset as a starting point when working with custom meshes.
Sub-Graphs
VFX Editor adds a new kind of sub-graph: the Container Sub-Graph. Like regular sub-graphs found in Material Editor, Container Sub-Graphs are used to encapsulate node logic into higher level modular blocks, making the asset faster and more fun to create while making the graph easier to read. The difference with Container Sub-Graphs is that they have no Export nodes -- their purpose is to modify particle attributes.
Lens Studio comes with over 50 premade Container Sub-Graphs that you can mix and match to create amazing particle effects. The Container Sub-Graph list can be opened in two ways:
-
Click the
Add
button on a container -
Hover your mouse over a container and hit
Tab
To create an empty Container Sub-Graph, open the Container Sub-Graph list and start typing Sub-Graph
. The top result will be an entry called Sub-Graph
.
Regular sub-graphs are also available in VFX Editor, and include all the sub-graphs available in Material Editor
plus a few specific to VFX Editor. To add a regular sub-graph, hover your mouse over an empty part of the graph and hit Tab
, or right click on an empty part of the graph and select Add Node (from Library)
.
For more information and to see a description of all sub-graphs in VFX-Editor, check out our VFX Sub-Graphs page.
Emitting Particles
In Lens Studio 5.6, we introduced the Emit
container node. This allows for much more control over particle emission than before.
Check out the Emission Control VFX asset on the Asset Library for examples on how to use the Emit container.
The old method of emitting particles is still supported, so for VFX created before version 5.6 you will not see the Emit container at all. This uses a set of fixed functions to control emission.
Migrating to the Emit Container
If you are upgrading your system to use the Emit container, you can create the Emit container like you would any other node and connect it to the (old) Spawn container. Note that several changes occur when this happens:
- The old method of emitting particles stops working and particles are only spawned based on nodes in the Emit Particle container
- The Spawn Particle container is renamed to Initialize Particle
- The Initialize Particle container removes many settings: Spawn Space, Spawn Mode, Spawn Rate, Burst Rate, and Max Particle Life
- Particle count is now set explicitly on the Emit container
- Particle coordinate spaces are now only set on the Update container
- World mode will pass the object’s transform to initialized attributes. After spawning, particles will simulate in world space. In the old system, this is the same as setting Local in the Spawn container and World in the update container.
- Local makes the particle simulation relative to its scene object's transform. In the old system, this is the same as setting Local in both the Spawn and Update containers.
To recreate the old "Continuous" spawn mode with the Emit container:
- Set the desired Particle Count on the Emit container
- Set the desired lifespan using a Modify Attribute node
- Set the emission rate to be equal to the Particle Count divided by the Life using a Particle (Spawn Continuous) node in the Emit container. Make sure the frequency is set to Per Second.
To recreate the old "Once" spawn mode with the Emit container:
- Set the particle life attribute to something very high, like 3600 (representing 60 minutes)
- Set the Particle (Spawn Continuous) node's Spawn Rate to be the total partilce count per frame.
This will immediately emit all available particles which will (practically) live forever.
Scripting
VFX Assets
and VFX Components
can be accessed in Script to set input parameters, allowing for powerful interactions with the rest of Lens Studio. This is done in a similar way as Material Editor.
For example, to set a float input parameter on a VFX asset:
//@input Asset.VFXAsset myVFX
script.myVFX.properties.myCustomFloat = 0.9;
For more information on scripting and VFX, check out the API reference for VFX Component and VFX Asset.