Oh, dang, that is a good idea- much more efficient. I think I’m going to do some similar things with Niagara code now, too.
Hey Bill! Really nice seeing you post here. You and the tutorials on imbuefx were probably a big reason how I got to where I am today. I remember writing to you back in 2013 thanking you Really cool to see what you’re up to now!
One element I rely on heavily in materials are all things procedural. It’s important to define what that means (at least in my opinion), which is defining things mathematically rather than just looking up a texture.
While this does start with an actual texture of an eye, this little guy has all sorts of movement and character to it because of elements defined in the material. One element is the 8-bit feel of the screen.
Here’s a trick I use very, very frequently: In the context of UV coordinates, you think of these typically being a 0-1 range lookup into a texture.
If you think of these values as linear curves, we can adjust those curves to appear more stair-stepped, that we render “blocks” of the same texture coordinate over and over.
Another way of visualizing the difference between linear to stepped is just with a line graph. This is often called a “stepped curve”, as it actually resembles steps.
The most basic form of achieving this in a material is with this setup here.
With this knowledge, we can apply it past coordinates and also use this over time to give a staccato feeling to movement. This is really powerful with things like lightning, tech screens, you name it. Here’s an example of a fractional time value going from 0 to 1 with 8 steps.
Where we are taking a normalized set of values, multiply by the amount of steps we want, and using something like ceil/floor/round/truncate to give us whole integers, then dividing them back down by our amount of steps to bring everything back to 0-1.
We can combine these multiple approaches together like in the example below.
Where literally everything is generated procedural, even down to the little LCD circles. The sweep is a simple linear gradient that’s stepped, but also pans up using stepped time.
How do you deal with the moire patterns? Do you soften results with distance, or fade between multiple versions or something?
Glad to see you here Bill! I’ve been a fan since the imbue days and have been following your career since. Looking forward to what all you have in that folder. I should do the same and share more of what I’m doing. We’ll hopefully this will inspire me to get more out there.
@Niels It depends. Softer things like gradients tend not to show the issue too much for me. More complex patterns do, so I’ve done things like changing values or fading based on distance just as you suggested. If it’s critical, I’ll use this suggestion made from Wyeth in this post
@DavidSchoneveld Good to hear from you again David! I’d be curious to see what you’ve been doing lately.
@andre Thank you!
Here’s a really fun and unique one to share. In Creative Mode, we released a set of reactive props that changed based on music. So you can place the radio prop in your island, pick a track, and the audio file has FFT data baked into it. Through a blueprint interface (and some custom code), we’d write 5 different frequencies to a material parameter collection. Each block would pick from one of the frequencies and change all sorts of material properties to make it come alive.
Here’s an early WIP isolating how the materials work using some debug noise.
This was some exploration work for the Outlander class in Save The World, I believe for some sort of phase shift. I don’t believe this was used in the end, but I always enjoyed the material work on the character.
Here’s another of the Outlander’s skills. This one was unique because it utilized a spline system I wrote in blueprints and can curve meshes behind it for amazing fidelity.
The blueprint tracks a single vector in world space on tick (every frame). It updates the last point in the spline to that world position. Once the distance between the two points reaches a certain threshold, it will add a new point and start moving that. It also respects things like lifetime, size, rotation, etc etc.
All it takes it just attach the spline actor to a point that you want to emit trails from, like a character’s socket. Even with simple shapes, you can get excellent volume and shape in your FX.
If you want to have fun and play with the blueprint yourself, download it here!
Is this BP also used to create the Battle Royale contrails too?
All this thread is so AMAZING! Thank you so much for the examples and explanations
You’re amazing! Can answer which part of GDC will be explained or displayed by VFX。THX
@Lush No unfortunately this blueprint is really expensive on the CPU, so it’s not used at all in BR. The contrails are all Cascade ribbons AFAIK. Also they’re moving over to Niagara now
@Anna Thank you!
@Wrey Thank you! I’m not sure anything has been announced for GDC yet that I can share, stay tuned.
This was some exploratory environmental FX work (for a project I can’t name). The fog is mainly volumetric fog using 3d fractal noises panning in world space. The snow particles are actually using a dithered mask material, which allows the particles to properly render motion blur and DOF. Those of you in UE4 know that this a pain when using non-opaque materials, so this was a good workaround.
Looks great, I get an idea for working on my snow storm effect, thanks!
Thanks for those amazing sharing!
how to get the distance field in ue4 for niagra using ? or we need to get the distance field in other way?
Thank you so much for sharing this! You’re an inspiration as always!
Hi Bill, I’ve been following your ue3 flowmap tutorial, it’s been a huge help with my endeavours
Hey Bill, for those really nice dust puff clouds around the character’s feet when they stop, are they animated meshes (like the ones in your GDC talk) with a good material on them, or are they sprites using flipbooks or material magic?