Kashaar: Sketch #16 WIP

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.

19 Likes

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 Likes

First aesthetics pass! :slight_smile:

https://imgur.com/fUrOjdI

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.

13 Likes

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

2 Likes

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

1 Like

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.

1 Like

Hey,

Great work! :smiley:

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

1 Like

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

1 Like

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:

1 Like

Wtf…where’s your beard?! Imposter!

Great work man!

2 Likes

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.

https://imgur.com/UiZ7acH

New dome-ish shield shape:

https://imgur.com/0GcUcG5

Transitions/Idle variations:

https://imgur.com/jNoYFhY
https://imgur.com/qUthSSi
https://imgur.com/Uwz0Uu4

Longer video:

Feedback very welcome!

12 Likes

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!

2 Likes

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?

1 Like

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:

2 Likes

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.

1 Like

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.

1 Like

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

2 Likes

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!

1 Like

Unity3D

4 Likes