Created shaders, made vfx, profiled scenes, improved performance, and provided general troubleshooting support
2 years on and off (side project)
Below are some examples of shaders I made for Relumine. I was responsible for every shader in the game. Some are as simple as color, emissive, color based upon surface normal, or gradient based upon bounding box. Others are stylized effects to describe complex surfaces like a few of those pictured below.
The shader for Relu’s light picks a color based upon the pixel normal.
Shaders for key characters and environment assets stay saturated during camera rotation, but everything else becomes desaturated in order to emphasize importance. In order to avoid the cost of post process, this is done by writing out a global shader variable in a C# script while the camera is rotating, and using that variable in a shared function at the end of every shader that desaturates the object if it’s not marked to remain saturated. This gif also shows the waterfall shader in the background.
The water shader does a depth comparison to add foam along the edges. The vert shader samples a low frequency noise texture for some movement. A couple textures drive the color, and one texture is used for ripples in various locations.
For speech bubbles and images, each corner of the UVs is animated using some semi-random math to add a certain “wiggliness.”
We use an angular wipe for this fade shader to match the 2d effect.
The crystal shader has a subtle Fresnel effect and a texture sample to be able to pick from a few specified colors. We do most of the complex math in the vertex shader and interpolate the data to the pixel shader, which trades some smoothness for better performance. Overall, the effect still holds up.
I fractured a crystal in Houdini to help achieve this effect.
This ghastly shadow has a vertex shader which applies noise to vertex position that increases when moving.
Materials can be selectively desaturated for effect.
The same effect is used for the look below.