Kashaar: Sketch #16 WIP

vfx
ue4
particles

#1

Latest update below! Preview:

Original Post:

Hey y’all! Finally a sketch topic that speaks to me, in a month I actually have some free time :slight_smile:

Being more of a tech artist than a VFX artist, I always approach things from a technical perspective - and this is no different. I don’t have a concept for the effect I want to create, but I do have a self-imposed set of requirements to make it more comparable to a real-world scenario:

  • Fully dynamic locational shield impacts
  • Arbitrary shield mesh shape
  • Within a realistic performance budget

The look itself is something I’ll try to work out as I go along.

Here’s my initial doodle, using blueprint particle events and vertex shader offsets to get accurate locations on the shield shape. Style extremely subject to change - especially the impacts are just a simple sphere mask at the moment to verify accuracy.


#2

Quick update:

  • Added a copy of the effect using a different mesh as a proof of concept
  • Garish colors so I remember to change them to something pretty
  • Impact is now a slightly distorted ripple. I used a noise texture/normal I made in Substance Designer a while back.

#3

First aesthetics pass! :slight_smile:

Colors need work (it’s mostly monochrome at the moment), and all the effect elements are still pretty basic… at this point I’d love some suggestions and criticism, if you have any!

Full update video here:

How in hell is it almost 6 am right now? Good night folks.


#4

Oh wow looks really nice! Did you use sphere masks in impacts or is it something else?


#5

Yeah, animated sphere masks with curve modification and texture-based distortion of the position input.


#6

I really like what I see here! I am a big fan of the flickering and distortion of the outline.
I would make the default appeareance of the shield something slowly moving with soft, large gradients. Maybe some kind of rimlight on top of the body that highlights the features of the body helps to raise the visibility in general, like here:

And I would add the distortion and flicker only on hits. Maybe the whole shield could flash for a very short moment.

Just my two cents.


#7

Hey,

Great work! :smiley:

Is this like a PostProcess or a per mesh effect? :slight_smile:


#8

Thanks! No post-processing involved, the ripple effect is using event-spawned mesh particles.


#9

Thanks for the feedback! I agree that it would make sense to have the “idle” state of the shield be calmer, and excite it when impacts happen. Some feedback I’ve received on discord went in the same direction, so I’ll take this into account and experiment a bit on the next iteration :slight_smile:


#10

Wtf…where’s your beard?! Imposter!

Great work man!


#11

Update #4: Slowed everything down a fair bit (maybe too much?), and tweaked the noise textures to look less, um, noisy. Also added some particle lights, which might have to be thrown out again during optimization later. Oh and I added an activation/deactivation parameter, controlled from blueprints, and the accompanying triggering of collision etc.

New dome-ish shield shape:

Transitions/Idle variations:



Longer video:

Feedback very welcome!


#12

Haha, I should update my avatar, that photo is going on 8 years old by now… Don’t worry, the facial fuzz is still intact!


#13

This looks great! Are you spawning a mesh for each hit? For example, on the human shaped shield, are you spawning a full human shaped mesh each time?


#14

Yep, that’s exactly the core of it. I’ll do a full breakdown when I’m done with the effect, but in summary, impacts are handled by a single emitter listening for particle events called from Blueprint at the impact location. The mesh particle is then moved back to the local origin via the vertex shader, and ParticlePositionWS is used in the pixel shader as the origin of the impact ripple.

The plan is to cull fully transparent tris via vertex collapse to reduce overdraw, but I haven’t gotten around to that yet :slight_smile:


#15

If you do your pixel projection through world space using a simple math ramp…you can divide the number of times you draw by the number of “hit processes” you support in the shader. I made one that supported three and had a way to “bail out” on the brightness of any given hit. Turn it into an additive only shader and you pick up a tiny bit more perf.


#16

Not sure I understand what you mean exactly - are you talking about managing impacts and spread in a single mesh via parameters?

The main reason I opted for this approach instead of a single material with fixed N slots is that I wanted an arbitrary number of concurrent impacts. If they need to be limited, max draw count should do… A render target would have been my second choice, but my gut says that’s still more costly than this, especially on non-PC platforms, but I haven’t actually tested that to make sure.


#17

Thank you for the quick breakdown, looking forward to the full when you have the time. :slight_smile:


#18

Yes, that’s what I would have expected- a single mesh with N slots for impacts. It might do the job pretty well. Either way, nice work!


#19

Unity3D