Cloud Shader

Features

Custom Colors

Animation Speed

Subsurface Opacity Strength

World Position Offset Strength

Creating the Textures

I started by creating the textures in Substance Designer. I made a height map for the base clouds texture, and a mask for the smaller wisps.

Panners & WPO

I brought the textures into Unreal Engine, where I first set up the panners for each texture, both at different speeds to create a greater sense of depth.  Next, I plugged the base clouds height map into World Position Offset to create surface distortion.

Subsurface

To make the material more realistic, I turned subsurface on to imitate the way light passes through clouds in real life. I utilized the clouds and wisps height maps as opacity masks for this step, only allowing light to pass through certain areas. I also used the Fresnel Function node to ensure that the edges of the mesh are glowing as well.

Other Details

Instead of using a texture sample for the color, I reused the clouds mask to separate the shadow areas from the midtones and highlights, and assigned customizable colors to each.  Finally, I hooked up the normals and ambient occlusion maps to their respective outputs.

Material Graph Overview