WIP: Realtime Adaptive Snow


I encourage you to read through the thread in the UE4 forums, as I’ve already answered some interesting questions there and provided a little bit of insight.

A testversion of the snow can be downloaded here.


WIP Images and Videos (newest first):

Reworked almost every part of mask generation to be less clunky. Multiple material functions for easy modularity.


Usage demos with vertex color, adding an attribute to the system and changing the base material.


Added wetness:


Tested material on a Landscape with tessellation:

(Result: Tessellation not good on Landscape, maybe try Parallax Occlusion Mapping)


Added slower melting in shadows based on vertex normal and mean sun direction:


First test of the snow with one of Epic’s Open World Demo materials as base:


Research on how to do snow sparkles without creating a custom shading model:

Graduation Project

Practical Project for the Bachelor Honours Thesis

UE4, Blueprints, UMG, Proof of Concept

Trailer of the Final System:

This weather system manages different weather states and the transitions between them. It can control every parameters that is added to the system and can be used for every kind of art style.

While I created the entire interface functionality using UMG, all the graphical elements and icons were designed and created by Sümeyye Icel who was a fellow student.

Technical Features:

Creating a Custom Weather State

Here you can see how a custom weather state is created with the interface that was specifically created to control the system. This interface would not be accessable by the user in the final product. The new weather state integrates seamlessly with the existing states and can use it’s own specific transition curve to determine how the transition from other state to this one is happening.


Adding a new Parameter to the System

The following video shows, how a new parameter is integrated into the exsiting system. The parameters were authored in this proof of concept with a combination of a Google Spreadsheet and a Data Table in Unreal. At this point the system was focused on material parameters, therefore a Blueprint would create an instance of a struct and fill it with all nessecary data of a parameter. This resulted in an array of parameter structs that were used by the interface and the core system to set the values in a specific Material Parameter Collection (MPC) and the interface respectively. These MPCs could then be used in materials or it’s values could be accessed by another blueprint or code which would use these values to change gameplay behaviors.

A good example would be traction in a racing game when it’s raining. The traction could be controlled by the amount of rain specified by a weather state. Or you could create a traction parameter which could be controlled by changing weather independently of the rain amount.


Future of the System:

The system has in my opinion great potential and I want to create a more refined and advanced version in the future. This future version should be a plugin for both UE4 and Unity and should have very precise scientific calculations for the sun, moon and night sky positions. Further I would want to do more research on the transtition and using an AI with Markov Chains that is based on real world weather data to be able to do completely autonomous transitions between the defined weather states or even create states on the fly based on more general parameters like season, humidity and temperature.

If you want to know more, contact me or read the honours thesis. I also created a thread in the UE4 forums and started to create better snow for the second version of the system.


Unity Stylized VFX

BlendAdd and Per-Particle Offset in Unity

Learning VFX, Unity3D 5, Stylized


After seeing this GDC talk on the VFX in Diablo III, I wanted to learn how to do something similar.

The lava-effect is based on the winning entry of  Riot’s Art Contest on polycount in the category VFX.

To create the splines for the lava-effect I followed this amazing tutorial on editor friendly splines for Unity and did a few modifications so that they work with animations.


At first I searched for a way to implement the Blend Mode mentioned in the talk. As it turns out, it is very easy to do and should be one of the default blend modes available in every larger engine.

Per-Particle Offset

After having the blend mode done in a custom Unity shader I went on to search for a way to realize the per-particle UV offset that was also mentioned in the GDC talk. Even though Unity has no way of doing per-particle UV offsets with the default particle system, my goal was, to find a solution that works without 3rd party plugins and using solely the default particles.

This workaroung for this problem is absolutely not the best one and I do not recommend using it for anything else than experimentation!

The only way I came up with, without having access to the Unity engine source code and using only the default particle system, was a simple script and a custom shader.

It uses the Blue and Alpha channel of the initial color to offset along U and V for each particle individually. This on the other hand makes the particle Color over Lifetime and Color by Speed unusable as anything else than values of 1 would change the offsets. To compensate this I created the shader with two additional color parameters. One for a lifetime of 0 and one  for a lifetime of 1 and used the Red channel of the initial color as lifetime input, to have at least a linear transition between a start and end color. The same could be done for Color by Speed which would use the Green channel of the initial color and another two color parameters in the shader. 


Personal Projects

Partial Reproduction of an Architectural Visualization by Koola

Date: around 8. Sept. 2014

After seeing this video by koola I wanted to find out, what it takes to create a similar indoor scene and learn about sunlight shining through windows without using a directional light.



One-Day-Project : Whisky Glass

Date: 19. Sept. 2015

Modelled in Maya, Displacement Map sculpted with Z-Brush, Rendered with V-Ray


Student Team Project – Racing Game

Bachelor Team Project – “OffLimits”

Time trial racing game, UnrealEngine4, Prototype


  • Blueprint programming
    • Gameplay
    • Custom vehicle movement
    • User interface functionality
  • VFX for vehicle and environment
  • Vehicle Design

This is the second project I convinced my team to use version control.  I decided to use Perforce as it is integrated into UE4 by default and handles large asset sizes pretty well. As we were a team of artists I had to teach everyone the basic principles of version control and how to apply them using Perforce.


Technical Features:

Custom Vehicle Movement

The custom vehicle movement uses the default UE4 physics and forces. The green arrows/dots show the points at which the forces for the hovering are applied.

Vehicle VFX

The length of this particle effect is directly based on the axis-value of the gamepad triggers.

Volume Manager

A small blueprint I made for our environment artist to be able to change the visibility for all volumes of the same type at the same time.