Hey y’all! Finally a sketch topic that speaks to me, in a month I actually have some free time
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.
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.
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.
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
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.
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
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.
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.