Olmirad's sketchbook

Hi all,

Thought I’d make an account and post some of my VFX Graph (and other) effect studies here :smiley:

Usually I post stuff to Twitter and I tend to do more abstract stuff when I do my own things as I want to focus on the technical side of the things so that I can try to find out new ways of doing things and learn some math / algorithms etc. That’s why you might see many geometric shapes etc.

Recently I’ve done most of my tests/exploration with Visual Effect Graph in Unity. I also write shader-based effects sometimes and use compute shaders to generate geometry etc.

Hex grid studies with Visual Effect Graph in Unity

Tools: Unity, Visual Effect Graph

My SDF generator proto tests with Visual Effect Graph in Unity 2019.3b

Tools: Unity, Visual Effect Graph, custom tools

Wireframe-surface studies

Tools: Unity, Visual Effect Graph

Grids

Tools: Unity, Visual Effect Graph

Reaction-Diffusion

Tools: Unity, compute shaders

JFA + Noise Studies

Tools: Unity, compute shaders

Physarum Transport

Tools: Unity, compute shaders

SDF Voxelizer

Tools: Unity, Visual Effect Graph, custom tools

EDIT: Oh well, seems like I can’t change the thumbnail image for this post for some reason…

9 Likes

And if you got any questions, feel free to ask! I’d like to get to know a few more Visual Effect Graph users, they seem to be very few and far between.

1 Like

Dang, this stuff is so cool! Can you tell us a little about your process in creating all this precedural goodness? I haven’t used VFX Graph, or Unity. Is there something about that tool that makes doing large scale procedural stuff like this easier? I’ve seen some really wild stuff people have done with it.

I think VFX Graph’s most useful feature at the moment is it’s ability to push out a lot of GPU accelerated particles. And intergration with the lighting pipeline. You can exploit all the good stuff, shadows, reflections and so on.

But there’s not really that many tools in VFX Graph that help you to do seemingly complex (or actually complex) things. It has a few array style blocks (sequential shapes) that allow you to create particle arrays along a few different axes (line, plane, volume, i.e. 1D-3D). You can also spawn particles in more random fashion in some simple geometric shapes like sphere, torus and can’t remember what else there was. Rest is up to you how to create complexity.

I’ve used those array-like sequential blocks to generate starting point for many of the effects I’ve created. Then used math and various tricks to get continuous line shapes etc. by offsetting line segments start and end points. None of the clips I posted use the new 2019.3 latest VFX Graph line strip element.

Then I’ve just added all sorts of deformations with various noise types or cooked up my own solutions starting from randomness, position etc.

dude your compute shaders is off the chain, soo rad :star_struck: you rock \m/
can’t wait to see more of these awesomeness you creating, thanks heaps for sharing \m/

1 Like

hey bud. those SDF effects are REALLY cool. any chance you could show how you put them together? would make for a really cool music video.

I might be able to show sometime later, but the process is really not that different from what similar type of effects use when done with pure code. I think it’s more important to understand the concept, as the actual execution could differ a lot depending on the use case, required style, resolution/poly-count and so on.

Anyway, the high level steps are:

  1. Create a SDF (Signed Distance Field) volume texture from a model. I made my own renderer that does this for static or animated meshes in Unity in real-time.

  2. Make this texture available for VFX Graph in Unity. (I think you could probably do similar in Unreal too, but I’ve never used it properly so I don’t know. ) But VFX Graph has a node that allows you to use a texture3D type as an input.

  3. Use this 3D texture to do the rest of the steps. I just generate texture coordinates manually and sample the texture and use that data to show particles on the screen and then add all the extra fluff by exploiting the distance change in the SDF data to alter colors, size, rotation and so on.

thanks for the tip man ill have to give it a try.

I did some tests with vector fields a few days ago. The idea was to be able to generate them in real-time and use with VFX Graph in Unity. I created a small compute program that produces vector fields from a few types of noise that can plugged in. That noise is then morphed in real-time and updated every frame and the result texture is inserted to VFX Graph.

I didn’t have many hours to use on this so this test was left a bit unfinished; I’d need to make a noise system that blends the edges of the volume so that I can generate continuous noise; the noise itself is continuous but the way I hacked together the directions from the noise was somewhat hacky… :slight_smile:

The video capture is bit laggy in the videos, sorry about that!

When I was testing the vector fields and trying to get something sensible to show up, I did the visualization with VFX Graph itself :smiley:.

You can achieve this quite easily by generating UV from particle position and sample the Texture3D data.

Another Visual Effect Graph doodle, I wanted to make some circles when I was warming up my brain for coding and that was pretty much all the point in this one.

Here’s a few more from last few days. After following discussion over at Unity forums, it occured to me that maybe it might be possible to use VFX Graph (after all) to fake some attraction to other particles. Here two tests I’ve made so far. There’s an invisible particle system that is acting a goal for the particles in the visible system, which makes it possible to get some interesting (imo) particle movements.

There’s no “real” particle interaction going on, as might be obvious to anyone who’s used VFX Graph as that’s not possible at the moment.

If I make more soon, I’ll add those to this post.