Join Rayane Saada as he brings a holy concept to life, creating a semi-realistic effect in Unreal Engine. From sketching to overcoming challenges with wave shaders, delve into the detailed process of this captivating VFX project.
Introduction
Hi there! I'm Rayane Saada. I started making small games with Unity 11 years ago. Later, I switched to Unreal Engine because it was more artistic-friendly. I'm currently studying VFX for films at university and I started creating games VFX last year with Unreal Engine on my own. I instantly fell in love with the process and have been practicing ever since.
The Workflow
This time, I wanted to create a semi-realistic effect inspired by Lost Ark, but add my touch to it. After doing some research, I ended up going for an area of effect that has holy elements in it, so the main color will be yellow/gold.
Now, before getting on Unreal, I always like to start by either finding a concept, or in this case, sketching it just to get a clear initial idea before starting to iterate and work on it.
As you see, we have the main effect, an area of effect, which is the one on the right, where we can see a summoning circle, the swords that are coming from the sky. In the center, we will have an energy aura going upwards from the character, which is explained on the left. Later, I also added a big sword coming from the sky as the final impact. Now that we have a general idea, we can begin searching for references.
Now, regarding timing, as it is an ultimate AoE attack, in our case, we will have a buildup to accumulate energy, a climax when we'll have something to signal that the energy finished accumulating and is ready to be released. And then, we will have a release of the main effect. Then, for the final impact, I added another buildup with the character accumulating energy, and then, the character glows up to signify that is full of energy and ends up with a final release.
Moving on, I began by breaking down what meshes I needed to model. So, if we analyze the effect, in the buildup, we have a cylinder mesh that is open on the base and a disc/circle mesh, so that the energy wave can seem to go from outwards to the center and upwards. And in the final impact, I'm using a simple cone mesh. The meshes were done with Houdini, as it is easier to adjust the vertex colors and overall better control of the geometry, using the curve ramp in this case, to control and smooth the curvature.
Now that the meshes are done, I began working on the textures. Analyzing the textures in the VFX of the paladin in Lost Ark, we can notice that the texture is rough and a little bit "dirty". In my case, I wanted to have more clean textures, but I also wanted to experiment with chromatic textures, as I've seen them used very subtly in some games to give the effect more hues and that unique feel to it. For the first texture, I wanted to have a texture that is "speedy" and that has a noticeable contrast. So, after some tests, I ended up with this one.
For the chromatic texture, after searching on the internet, I found an image that I could modify. So, after importing it on Photoshop, I modified it with the smudge and blur tools, and then, used the offset filter to make it tileable and finally imported it to Unreal Engine.
Now that we have everything that we need, we can begin assembling the puzzle pieces/each element that we have after organizing everything in its corresponding folder (Meshes, Textures, Niagara, Materials).
Before starting out with shaders though, something new that I learned is that it's a good habit to make sure to choose a character that corresponds to the theme of the VFX. In this case, knowing that the effect will be a holy one that has yellow/gold as a primary color, I chose to use the Serath character from Paragon, as it had the color scheme corresponding to the VFX, but also she is a holy character.
The main shader that was used and reused in my case for the wavy elements was the wave shader.
As I'm learning shaders, I wanted to try a new technique, so as you see, as a main texture, I used the chromatic texture, then added a desaturation node to control the intensity of the colors. Then to have that "wave" going on, I used a wave texture (basically a wave line gradient with noise) with noise added to it, for the masking, I used a linear gradient that is rotated 180 degrees and that I can also control with the power and the intensity, to control the offset of the wave. In the "Wave Control," I'm multiplying the texture coordinates with the Wave UV, then adding the offset, and controlling it in Niagara afterward using the Dynamic Parameter Node.
A material worth mentioning is the swords one, which is a simple translucent material with a chromatic texture applied, a noise, and a mask to make it dissolve. Something that I did to reduce overdraw and optimize it, as it is a translucent material, is to simply add the "DitherTemporalAA" node to the opacity/mask. This adds a dithering pattern, basically little pixel holes, that kind of fakes translucency on the masked material. It makes the material more performant and adds a cool-looking texture to it.
After setting up the materials using the chromatic texture, I obtained this kind of look:
Now that we have our materials, we can start creating the Niagara systems. For the buildup, we have the cylinder that is charging energy going to the sky and other supporting elements to blend it well with the environment.
For the main effect, I created another Niagara system that has two phases. The first has the area of effect appearing, some god rays that are appearing from the top, and then swords falling and hitting the ground, making an impact wave along with some smoke.
A challenge that I faced for this particular effect was making the little impact waves appear when the swords touched the ground. There are many ways to achieve it, in my case, I used event handlers in Niagara, basically what it does is: the swords upon hitting the ground generate a collision event, and then in the impact waves emitter, the event handler receives the collision event of the swords and tells the emitter to spawn the impact at the position of the collision of the sword.
In the second and final phase of the whole effect, the character accumulates more energy, and then it makes a big sword coming from the sky hitting the ground. So, we have the character charging while glowing more and more, then, a big sword mesh that upon hitting the ground makes a cone mesh appear, and we have little rock meshes that get thrown out along with some smoke and particles.
Now that the effect is done, I began adding secondary effects like screenshakes and chromatic aberration. But I also wanted to add a radial blur to emphasize the impact even more. So, after doing some research, I ended up creating this post-process material.
We basically take the screen position, plug the ViewportUV in the UV input of the PostProcessInput, mask its color output, and lerp it with the Radial Blur. Then in the Alpha, we create a Radial Gradient aligned to the Screen, and to make the fading smooth, we multiply it with a Blend parameter.
Summary
In conclusion, I'd like to thank my mentor Michał for believing in me and giving me lots of feedback; Kim and Björn for being there and helping me out even though they were busy!
This was definitely the most complex VFX that I have done till now, as it was challenging and I'm grateful for everyone who took the time to give me feedback to improve this effect! I hope this breakdown has helped or taught you something new, always keep learning and have fun! Thank you!