top of page

Karolina Motužytė

2aeMZRM.gif

Karolina
Motužytė

Hi! I am Karolina. I am a C++ programmer that specializes in DX12 graphics, which I study at Breda University of Applied Sciences. 

Here you will be able to see my work, both in custom engines and UE5 :)

Check out my work!

Custom shaders in UE5

I worked on these effects for 2 months in UE5. During this time I used HLSL, C++ and material graphs to create shaders that could be implemented in a grimdark style shooter. 

My main goal was to familiarize myself with with UE5 as a graphics programmer.

Project repo can be found here.

To see the effect in action, check out our game on Steam.

Material graphs, external shaders and custom render passes

During my research I found multiple ways to create shaders, one more elaborate than the other. In short these were my conclusions:

  • The material graph can be used for simpler shaders, as long as they don't require a for loop. They can get messy when the complexity goes up.

  • Custom nodes - external files can be included and used in custom nodes, this is made easier once a game module is created, which makes sure the .ush files are compiled at the right time and can be included without getting stored in the engine folder.

  • Custom render passes (Global shader and scene view extensions) - most complicated to set up, but best for more expensive shaders, as it avoids the overhead of the material graph.

For a more in-depth explanation and tutorial, you can check my UE5 forums post here.

Screenshot 2025-02-14 193450.png

First iteration: not sure about the smoke direction. Wanted a more "technological" approach.

Second iteration: Wave effect too short and barely noticeable, effect around the edges would look better applied in screen space.

Third and final iteration: added a textured blue overlay and made the wave effect longer and more refractive.

This effect is made of 3 components:

  • A refractive material for the waves

  • A post-processing material for the color and texture overlay (using a custom node and HLSL)

  • A particle emitter for the wave effect

A lot of iteration went into it, as my team and I decided on how the effect should look. 

Some reference links for the final effect:

Fog effect

The fog effect was created for the insanity mechanic intended to be in the final game. The main goal was for it to indicate the player's insanity level by lowering the player's  vision. 

My main challenge was finding a way to make a fog effect that would look good even when the camera moved or rotated. For this I decided to go with pre-calculated 3D Perlin noise.

Furthermore I also applied a noise around the edges of objects. For this I used a Sobel matrix to detect edges after considering other edge detection algorithms, as it was sensitive enough whiles still being lightweight.

Glitch effect

The glitch effect has 4 effects stacked on top of each other:

  • Color aberration

  • Block shifting and distortion

  • Lines moving up and down from the sides using sine waves

  • Another sine wave to create glitch pulses

This was done using a custom node and an external shader, as it required a for loop, which is not available in UE5\s material graph.

The shader ended up being used in the game as a low HP effect together with a very simple double vision shader.

Push effect

bottom of page