This is a compilation of tools and shaders I made for the project Vikings Valhalla, developed by Emerald City Games and published by Netflix. In this project I worked as the Tech Art Lead, working together with Alexandre Soria (https://sorialexandre.tech/).
Most of those videos have outdated assets and don't reflect the final look of the game.
Water shader as seen in the final game
Demonstration of the fake Subsurface Scattering. Its opacity is controlled by vertex colors, so we could add variation to its intensity and to avoid it close to the shore
Demonstration of the fake bottom parallax. The water shader is opaque, so I used parallax to make it look like it's transparent. Distortion the height map also helps with the illusion
The waves use a separate shader, and they are the element that helps blending the water and the land, making it look like one single transparent effect. I made a spline tool to test its placement
The shadow map is sampled manually so I could use the parallax of the fake flor to project shadows on it, also allowing the shader to distort the shadows
The ripples on the water are done using a volume texture. I had to make a script that calculates a 3D Worley noise and saves it as an asset. The texture is very low res, and the shader samples it 3 times for variation
The waves are done by remapping 3 gradients at different speeds and distortions and adding them together
I also worked on a shader for the rivers crossing the stage
Environment artists had the freedom to paint the rivers with vertex colors inside the engine. The meshes would them be saved as assets
Lookdev of fire, smoke and blood
Tests with vertex animations for buildings collapsing and taking damage
Experimental Vignette shader that, as long as its visible in front of the camera, fits itself on the corners of the screen, and uses vertex offset to avoid overdraw. Its settings are controlled by a script
Comparison between a PBR shader (left) and the custom character shader (right). It adds anisotropic reflections and a discrete tint of red on the face close to its shadows. Also metals don't rely on cubemaps, using a matcap texture instead.
This is the texture used as a matcap in the shader. Red and Alpha represents the anisotropic reflections, green is the specular gradient and Blue is used as a metallic reflection. There's no diffuse gradient in the Matcap
Shadows and highlights trick to make the grass feel more volumetric
The ground has a shader that samples 4 different tilable textures in a single atlas, where the grass and rocks have a special blend formula, with the 2 other slots reserved for dirt/snow and sand
Early version of the floor shader, testing how to sample tileable pieces of an atlas. A second shader "fuses" 4 sets of textures into one atlas, and the lighting is calculated there already using all necessary textures. The actual floor shader is unlit
The floor shader also supports vertex colors to add tint variations as needed
I made a Worldmap shader that allows designer to paint their own maps with little artistic skills. It uses vertex colors to paint itself. You can paint stains, landmasses and rivers on the map
A render-texture was used to hide/reveal parts of the map. It creates an effect where it looks as if the map is being drawn and painted, all controlled by animating the scale and opacity of sprites invisible to the game camera
This wind controller can change the direction of the flags and also rotates all the animated grass so it also moves in the right direction