Multiple Volumetric Cloud Layers?

Hi, I’m trying to figure out how I would go about creating multiple cloud layers. I want to recreate the different clouds at different altitudes. Some of the things I’m trying currently/thinking about:

  1. Building X amount of tillable noises into one volumetric material. I don’t know if that could work but it was a thought.
  2. Tried using the Volumetric Compositing Blueprint to make multiple cloud layers. I have not been able to start this from scratch, but I was hoping I could place clouds at specific Z heights and change their density’s, top/bottom altitudes just like the base game Volumetric Clouds do already.

I’m pretty stuck on this currently. Would a Ray Marching Volume be needed for this? Do let me know any thoughts or suggestions. Thank you!

You would do this in your cloud material. You can retrieve the altitude from the CloudSampleAttributes node and use it to heightmask your material into multiple layers.

3 Likes

Ah thank you! Would you happen to be able to show me a rough example of this? I’m using the base game m_SimpleVolumetricCloud material and have never worked with heightmaps/masks before. Is there any difference between a heightmap vs a heightmask?

I’m going to do more research on this :smiley:

“Heightmasking” is just an idea, what I mean is you make a mask based on the height. Then you can use that mask to blend layers together the same way you would use a mask to blend different layers together in 2D. That’s all.

To be honest it sounds like you need to get some experience with working with materials in 2D before you try messing with volumes. For whatever it is worth, I primarily learned the material graph from tharlevfx’s tutorials on youtube, which I highly recommend. I learned how to work with volumetrics from Ryan Brucks and Asher Zhu’s tutorials, and I specifically learned how to work with clouds by studying the default cloud material that is in the Time of Day level. The ToD material graph isn’t very easy to parse, but there’s a lot of interesting things being done in it.

Regardless, he’s an example anyway. This is the simplest example I could come up with. It is not intended to be practical, just to illustrate the point.

Normalized altitude in layer returns a 0-1 value depending on where in the cloud layer is being sampled. With 0 being the bottom of the clouds and 1 being the top.

By rounding it, all values below 0.5 will become 0, and all values above 0.5 will become 1. We’ve essentially split it in half, a top and a bottom represented by black (bottom) and white (top). Having done that we can use it as the alpha for a linear interpolate to mask off the different “layers” of the clouds.

Result:

You could do this with the precise altitudes instead of normalized altitude but I’m not smart enough to figure out how to do that without a ton of branches.

You should probably use an IF statement instead of a lerp.

Regardless.
My question is…

Currently, can we define different height layers with what is in engine?

Does it support multiple instances of the cloud actor so as to define the different ranges and completely isolate them for composting?

  • for once, not interested in performance -

I Just haven’t had time to play with the volumetric clouds much, and I noticed that regardless of what you set for height, one layer looks pretty much like trash 90% of the time.

Mostly because it doesn’t fit with how clouds are actually divided by our classifications of their natural behavior.
Nor did I see an evident way to set a layer as cirrus, and another as cumulus…

Hi! Thank you for the response. I’ve been watch a bunch of his YouTube videos since you linked me too it. I’m understanding it now! Is there anyway I can see the rest of your level blueprint? Are you doing this Square/Circle layer in a material for the Volumetric Clouds? Is circle square layer just 2 plain textures you lerped for the altitudes?

If so, I could use the same ideology and apply different cloud textures and lerp per each altitude layer to create cloud layers?

There’s no level blueprint

It’s in the material yes. As far as I know, practically everything with volumetric clouds has to be done in the material (or at least that’s how I’ve been doing it.) The material is everything.

Yes, it’s just a 2D texture using world X/Y coordinates as UVs. Basically generic boilerplate stuff.

I would stress again this was not a practical example. Using lerp works in this case because I’m just projecting the textures straight down to illustrate a point in the simplest way possible. Blending layers with lerp won’t give you realistic results.

For a real material you probably would not want to do this, because this forms distinct layers and what you would really want is cloud types overlapping multiple layers like clouds work in real life. To do that you would want to create your “layers” individually and combine them with add or max instead of lerp.

Update:
So I’ve watched a bunch of other people doing Volumetric Clouds on YouTube and I’m still stuck. With the Cloud Sample Attributes, I’ve multiplied it by 4 and multiplied that with the Greyscale texture already in the engine. I get 4 layers per each of my spawned clouds but not 4 layers of clouds. Haha - definitely harder than it seems.