2025/11

Unreal Engine, 3Ds Max, Liquigen, Substance Designer

◆ I did not use generative AI.

What I did I made the vfx, shaders, and camera work. I heavily altered the environment to fit the scene. I also adjusted the character animations.

Assets used The stone statue model, environment, character, and character animations are assets created by other artists:

Sunken Statue

For this project, I created game-ready VFX for a cinematic sequence. It includes:

Water Shader

I challenged myself to create a water shader without using Unreal Engine's Single Layer Water Shading Model. Instead, I made it “from scratch”, starting from the Translucent Shading Model.

The real-time water interaction works like this:

1.Capturing the movement of the player (or other actors). I do that via blueprint components which send information to the Niagara Grid 2D system. Then, in Niagara, I translate that information into a “Locations” texture using HLSL.
2.Using the “Locations” texture, I use a convolution kernel to simulate ripples on the surface of the water. I also use the texture to create a foam mask. I write all of this information into a “Simulation” texture.

3.I can now use the “Simulation” texture inside the water shader to change normals, refraction, opacity, color, etc.

Water VFX

The water falling effect is made up of a few different layers:

1.Panning normals on the statue material
2.Water falling shader on a mesh that wraps around the statue
3.Flipbooks and single droplets placed strategically
4.Water splashes on the water surface

The activity of the emitters and the opacity of the effect changes based on the distance to the water surface. This way it is only visible where the statue just emerged.

Blooming Flowers

For the blooming flower effect, I focused on simplicity for an optimized effect that can be used on hundreds of flowers. That is why the animation is driven by a single RotateAboutAxis node, with some math magic to make the movement look rounded and believable. I hand-painted the flower texture to get the right magical feeling. I assembled the flower asset in 3DS Max.

To get simple buoyancy working for the flowers, I simply used the normals derived from the “Simulation” Texture, as they have the directional information needed to push the flowers.

Nadal Sastre Molinas

Portfolio

Previous Project