Wind Shader
Ubisoft NEXT Technical Art 2025, 2nd Place
Unreal Engine Shader
To keep up with the forest theme of this project, I of course added a foliage wind shader to add movement and liveliness to the scene. The end product is a material function that outputs a world position offset and a global material parameter with all of the variables needed to control the wind.

Large Sways

There are two parts of the shader, the first part of the shader is the large sways, which rotates a mesh back and forth towards a direction.

  • Back and forth movement is obtained from plugging time to a sine wave node
  • Different parameters are exosed to control speed and sway amount
  • A base bend amount is added to make the vegetation sway back and forth while already angled

Jitter

The second part is the jitter, where the mesh is wiggled around for a more granular random movement. In this case,  

  • I used Unreal's Simple Grass Wind material node, adding parameters to control the values
  • An additional world position offset is added , pushing the overall mesh towards the wind direction

Final Setup

Material Function: All of the functionality is under one material function that can be easily used with exposed parameters exposing swaying and jitter amplitude and speed. Other important parameters such as pivot position and vertex color mask is exposed, allowing use depending on the asset, such as meshes that use pivot painters.

Global Parameters: Wind direction, strength, and speed are exposed as global parameters, using a material parameter collection.