Sketch #10: jqarlsson

already looks better than most fires in most games out there hehe.

1 Like

Thank you @Luos_83 :slight_smile:

Here’s a small update:

I’m still working on the shape, shader and colors for this. But I think it’s getting there. The motion is also getting there but it all needs a bit more love. I’m trying to get more variation into each sprite as they spawn via dynamic parameters as well since I see they repeat the same pattern when spawning. I also noticed that the flames a bit too tall. :smiley:

Hopefully I will have something more to show a little later!


Here’s the last update for today:

Next up is either adding smoke or animating the position of the light and its intensity to mimic the changing intensity of the fire. I’ll try and animate its colors as well slightly.
We’ll see which one catches my interest tomorrow! :smiley:


Managed to get some time spent on the fire this evening!
I’ve added a spline for the light and animated it along said spline. I’m also animating the intensity of the light to give it a little flickering feel.

Babysteps! But getting closer.
Next up is doing some light smoke :slight_smile:


Damn that looks so comfy, I could spend hours watching this. Really good job !

1 Like

Thank you @Orik! I’m happy you enjoyed it! Hopefully I will be able to add another update this evening.

1 Like

Here’s the update for this evening:

It’s not much of a difference. I’ve added smoke. :smiley:
I’m feeling quite satisfied with it for now but if you guys have any feedback I’d gladly listen to what you have to say!

Here’s a small breakdown:

The flames used for the big sprites in the campfire:
I used SubUVs and spawn them randomly to have the shape of the fire change from now and then. I think it worked out quite well!

Here are the logs:
Up close they look a bit like a swimming pool with caustics xD But from the right distance they sell the illusion.
Either way! I think the baked vertices are doing a great job! I simply used a directional light from underneath the logs and baked the lighting information to the vertices. Then I manually removed and added some where I thought it’d be logical (closer to embers, too far away etc)

If you have any feedback or questions don’t hesitate to bring it up! :slight_smile:


Your workflow is really impressive ! Good job ^^

Maybe you should try to make the global motion of the flames more “violent”; exactly like you did with the intensity of the light (as we can see, the shadows are jumping more violently sometimes)

It’s an amazing fire :smile:

1 Like

Thank you!

That’s some really good feedback! You’ve had me thinking about it all day! I’ll see if I can do some experiments on it this weekend. :slight_smile:

1 Like


Here’s a breakdown of the shader for the distorted flames:

I imported the normal map as a vector displacement map to get smoother distortions of the fire. It could of course be exchanged for a normal map compressed texture and you’d save around 256kb and wouldn’t have to use the bias scale between the mask and the multiply operation in the shader.

There are two panners in there. Looking exactly the same, using the same texture. But one has all the parameters connected to it called “Parameter_01” and the other “Parameter_02”. I’ve then changed scale on them in the material instance, how fast they pan and their intensity. I “hard coded” them to pan in a slightly different direction to make them return to their default position much later in time.

I painted the blue channel in the flames texture in a gradient manner that will cover the base and some more on the bases of the big flames. I multiply these values to the wobbly distorted flame values to limit the wobbliness to the top of the flame texture. Where the wobblieness should be strongest!

I’ve also used a Dynamic Parameter to add a random value through the particle system to the shaders panners in U. I had to minimize the chance of two particles spawning close to each other looking exactly the same. If you’ve connected the Dynamic Param in the shader it’s quite easy to hook it up in your particle system:

In this case, make sure you check “Spawn Time Only”. Since I’m using a Uniform Distribution the particle system will give me a random number between 0 and 1 only ONCE on EACH particle spawn. Giving every particle a more or less uniquely placed distortion texture.

Hopefully this can help someone with making their own awesome effects! If there are any questions regarding this I will gladly try to answear them!


Building mesh, controlling fire movement, and expressing firewood give me a lot of inspiration.

1 Like

Cool Effect! (or should i say hot?) . Thanks for the breakdown!

1 Like

Wall of text? You call THAT a wall of text. Psh. Whatever. :stuck_out_tongue:

Really though, this is super cool. Thank you for this! :smiley:

1 Like

Thanks for all the helpful info @jqarlsson. I have a question, if its a noob question, feel free to disregard. But why do you use NOrmal maps to distor your texture? And not like, just a regular black and white texture? Do the distortions come out cleaner? i just tried it last night, and they do look different, but I’m not really sure why, or how that makes it better if at all.

1 Like

I’m happy to provide some inspiration @slowdive!

Glad you liked it DeepspaceBanana! Happy to be breaking things down :smiley:

@Mez, it felt like I was throwing a wall of text out there! So I tried to even it out with some pretty images. Like a childrens book! :smiley: I’m really happy you like it! I want to update a few things when I get the time :slight_smile:

@pmiller - Well, since I’m not importing the texture as a normal map (selecting the option inside of unreal when importing textures) I shouldn’t really call it a normal map. It’s an RGB texture where I use the R and the G channel to make a 2 vector so I can use that to offset the U and V positions of the flame texture. I’m importing it as a vector displacement map in Unreal. The difference between vector displacement and normal map compression is pretty small though, in my case.

But like you said - it could be any grayscale texture made into a vector2. It could be two separate textures where you append both alpha channels to make a vector2 to distort the texture. Or any of the other channels for that matter.

If you import a texture with normal map compression it will automatically set the texture value range from -1 to 1 (as far as I’ve understood(?)) and if you use any other texture compression you will have to change that value range manually through the shader through a offset bias function if you want to be distortion the texture in both +U, -U and +V, -V

1 Like

That’s some really nice work, man! Very pretty!

1 Like

Thanks for that reply Jqarlsson , it wasnt making sense to me before, but thank you for clearing that up!

1 Like

Very nicely done, Sir! Thank you for the detailed breakdowns and the clean material graphs. :vulcan_salute:

1 Like

I’m happy to help! Let me know if you have any other questions :slight_smile:

Thank you @BrianKohrman and @aarontheuser! It was a super fun sketch to be a part of. I’m excited to hear what the next will be! :smiley: