Search Unity

Create beautiful and complex effects with the Visual Effect Graph: Verified in 2019.3

February 21, 2020 in Technology | 6 min. read

Visual Effect Graph has many new features and fixes based on your feedback, so you can start using it in production with the High Definition Render Pipeline (HDRP). This node-based editor enables beautiful, complex effects.

The Visual Effect Graph is Unity’s next-generation visual effects solution and is compatible with Unity’s scriptable render pipelines. It targets high-end hardware (e.g., PC, PlayStation 4, and Xbox One), and it runs on most compute-capable devices. It renders efficiently with the High Definition Render Pipeline (HDRP). It is also compatible with the Universal Render Pipeline, and it will be verified in a later release once it is feature complete. As its simulations run on the GPU, it can scale from dozens to millions of simulated elements with solid real-time performance.

What does “verified” mean?

Visual Effect Graph has been available as a preview package for one year, and we have improved its features based on your feedback. During this period, the code has matured and we have been able to demonstrate the use of Visual Effect Graph in small-scale real-time production cases. 

We have used it in The Heretic, Spaceship Demo, FPS Sample, as well as a set of Visual Effect Graph samples. Each of these projects demonstrates different practical use cases that can inspire your game production.

Version 7.2.0 of the Visual Effect Graph package is now out of Preview and verified for production. That means we guarantee stability, platform support and upgrade path. You will be able to migrate your project data and code to future Visual Effect Graph versions safely, and we will continue to develop and extend these features.

In this case, “verified” also means the Visual Effect Graph comes with extensibility and optimization options, various artists’ tools, and many practical case strategies. Read on to learn more about these advantages.

Production workflows

The node-based editor enables technical and VFX artists to design effects ranging from simple common particle behaviors to complex simulations including particles, lines, ribbons, trails and meshes. Most of the inner mechanics of the systems and simulations can be customized. Artists are empowered to create complex expression graphs with custom properties and events. VFX Graph’s underlying mechanics allow for both complexity and for the creation of simplified controls, letting VFX artists easily create effects for level designers and game programmers or building blocks for other visual effect artists to use.

Visual Effect Graphs are stored as Assets so you can reuse them throughout your scene and customize them with a property interface via overrides. You can also store preconfigured versions of a visual effect in Prefabs to make variant libraries of an effect – so you can still edit the underlying graph to propagate optimizations and feature improvements.

The tool comes with a built-in feature library that we will grow in future versions of Unity. While this library covers the most common cases, you can author and save your own graphs as Subgraphs. You can use a recurring tree of operators and pack them into an utility Operator Subgraph or even bundle a set of blocks and operators to make a Block Subgraph. You can also build a complete effect from other, simpler graphs, by nesting them into a master graph so they interact together (Visual Effect Subgraph).

You can sequence visual effect events with Timeline and animate their properties using regular Animations. While it’s compatible with Animation Tracks, you can also add Visual Effect Activation Tracks and use dedicated clips to send customized events to instances of effects in your scene.

Exposed Properties can also be synchronized with other scene elements using PropertyBinders. These small scripts bind an exposed property (for instance, a Sphere property) and an element of the scene (for instance a Sphere Collider). When correctly bound, the property will animate automatically depending on the other element’s value. Many types of property binders exist and can link scene objects, colliders, physic raycasts, UI and sound.

While implementing Level of Detail for static geometry is pretty straightforward, every Level of Detail in a visual effect needs to adapt in a more flexible fashion. By accessing the render camera properties and using the expression graph, users can define custom behaviors to control the rate, size and overall cost of an effect. 

Moreover, in combination with HDRP, using Visual Effect Graph can simplify Particle Lighting, compared with the standard lighting model. Users can decide to render render-costly effects in low resolution to maximize render efficiency with negligible loss of quality.

New features in 2019.3

VFX Shader Graphs (Preview)

We wanted to go beyond standard particle rendering, so we added a new kind of Shader Graph: VFX Shader Graph. This special Master Node enables artists to write dedicated fragment shaders for their visual effects. A VFX Shader Graph is optionally referenced a particle output to replace built-in rendering, giving artists a great deal of creative control. Exposed shader properties become new ports available to the output context, and you can link particle attributes to these properties. 

VFX Shader Graphs are available now as a Preview feature and will be improved upon in future releases.

Particle Strips (Preview)

We also implemented a new kind of simulated data: Particle Strips. This simulated data is composed of chains of particles, linked together, that can be rendered as a strip of quads or as lines. With this feature, users can create animated trails that are guided by other particles using GPU Events. But every point of a trail evolves independently of its guide so you can also apply wind, forces, and turbulence to it.

Particle Strips can be used in conjunction with VFX Shader Graphs.

Internal sequencing: Loops and delays

To improve internal sequencing, you are now able to loop and delay spawn contexts. These are basic sequencing functionalities that enable a spawn context to run for a time, perform after a delay and either stop or loop after a certain time. And of course newly created particles can access this context’s spawn time attribute.

Visual Effect Graph additions

When you install Visual Effect Graph, you can deploy additional assets by clicking the Import into Project button. This Package contains a set of flipbook textures, example graphs, shaders and subgraphs you can reuse in your projects. Or be inspired to build your own node and block library for your project.

To kickstart the VFX Shader Graph feature, we reproduced many of the built-in behaviors by providing Shader Graph subgraphs. This lets you sample flipbooks with cuts, linearly, or with Motion Vectors. We also provide a Soft Particle Helper Subgraph.

This package of additional samples also contains 25 textures (licensed under CC0) that can be combined and used in your effects or in your effect Shader Graphs.

Learn with practical examples

Our Visual Effect Graph Samples repository on GitHub contains a dozen different use cases for Visual Effect Graph. They demonstrate several features of the Visual Effect Graph in simple, yet gorgeous scenes.

If you intend to dive deeper into Production use cases, take a look at our Spaceship Demo. We just updated the Spaceship Project repository on GitHub so you can give it a try with Unity 2019.3. This project shows you how to build a coherent and performant scene, using many of the visual effects commonly encountered in game production and ensuring high-quality graphics. The demo targets 30 fps on base PS4 and +60 fps on gaming PCs, and we made it under real-life game production conditions.

Get started today

Visual Effect Graph is available for all projects that use the High Definition Render Pipeline. It can be installed separately for projects using Universal Render Pipeline (on compute-capable targets). Try it out and discuss it on our forums!

February 21, 2020 in Technology | 6 min. read