Project: JEL Dev log 01
Unreal Engine Lighting Style Experimentation
With Project: JEL, we are trying to produce a unique art style that will stand out among other games produced in Unreal Engine. One approach is to use a cel shader to imitate a hand-drawn style look as seen in anime and games like Zelda Breath of the Wild or Borderlands.
We have tried experimenting and pushing as far as possible using materials and post process tricks to produce a visually unique result. The style will continually be refined over time as we balance how objects look in context to the whole environment.
We have used a prototype weapon as a template to demonstrate our lighting style on.
The main effect uses two main techniques. A set of custom materials used on the weapon model as well as a post process effect for the cel shaded lighting. For now we’ll just detail the post process effect.
As can be seen, many different attempts were made using different techniques to try to get the desired look:
To start with, the default image is divided by the flat shaded base colour. This effectively subtracts all of the non lighting information from the final image and outputs a very simple grayscale mask of all the lighting. This is great since it can work with the directional light as well as as many point lights as you want.
From here, it’s a simple task of clamping the lighting and feeding it into a lerp node. The lerp can then just go into two colour tinted versions of the scene. One for a cool blue shadow and one for a vibrant orange highlight.
On top of this other subtle effects like saturating the edges of shadows are used to enhance the stylized look. We will try adding more of these subtle effects as the game progresses.
This effect produces a similar result to what is seen in many painterly art where the edges of shadows are saturated giving the scene a comforting and inviting look.
A very subtle effect that has also been added are very faint comic book style dots within the shadowed areas of the image. This is achieved through simply tiling a dots image and feeding a world normal scene texture into a world aligned texture node to make it ‘stick’ to every surface of the world. Using a world aligned texture prevents the dots from jittering around when the camera is moved.
By default Unreal Engine uses screen space ambient occlusion to darken corners between objects. However, this tends to just decrease the value of shadowed areas. This is unlike stylised art where shadows are usually saturated. To correct this the ambient occlusion can be sampled and used to lerp between a saturated version of the image.
With all effects combined, here is how the model now looks with just a directional light.
Thank you very much for reading this article. Feel free to ask any questions on the official Amythica Discord: https://discord.gg/6jcyUxzyc4
Stay tuned to keep up to date with more art and programming insight behind Project: JEL as development progresses! 🎨😁