Ghost smoke WIP

Been working on this for a few days and it’s finally looking something like I want it to. The inspiration was one of the effects in Control, the new Remedy game—there’s this really interesting sort of fluid / smoky distortion thing coming off some of the enemies (you can see an example around the 3:35 mark in this video) that I wanted to try to recreate. I’m not doing an actual fluid sim—it’s just a curl-noise offset applied each frame—but I think it works surprisingly well.

Next steps from here: making the “emitter” size scale with distance (right now it’s a constant size in texture space, which is pretty obvious when you move closer and farther away), then adding actual distortion and probably some color.


Newest version here for the thread preview:


This is soo cool man…

That’s very interesting

so cool:grin::grin::grin:

Dude. That is so awesome.

I had assumed this was some kind of post process effect. Are you doing it with particles? I would love to figure this out, as well!

Progress! I got the sizing sorted out, started on a color map, and added another octave to the noise. It seems to fade out a little more than I’d like it to; probably need to mess with the final blending.


Yup, it’s all post-processing. There’s a Blueprint script that projects a world-space position to camera space and feeds that location into a material that gets drawn to a render target, which then gets distorted in another pass using some curl noise. The final result gets blended in with a post-process material and then reused for the next frame.

I want to learn this :heart_eyes:

1 Like

This is fantastic, a breakdown would be amazing.


I think I have a plan for how to get it to handle object occlusion; I’m currently only using the red and green channels, so if I switch to a floating-point render target and use the blue one to draw a region of “here’s how far away the thing was” each frame, I should be able to compare that depth with the pixel depth in the post-process material and mask it out. Here’s a screenshot testing that with a fixed depth.

As to doing a breakdown—I’d be happy to share it, the technique isn’t too complicated :slight_smile:


:heart_eyes::heart_eyes:I like it