Website powered by

Ghosts of Tabor - Master Shader, Lighting & Decals

During my period on Ghost of Tabor as client of me for more than half year until the post release aside from provide our tools worked as principal senior technical artist.

- The Render & Reflections:
One of the biggest issues on mobile were the no correction on coloring, lighting and reflections, so turns out the scenes looked almost total different between platforms with the exact same content, the baked data lost their direction vectors and other alike contents, alike the reflection captures loss their normal aliment and other elements along the road, this on top that the tonemapper is different.

A new fake refleciton capture were introduced in 2D, since the spheric capture were limited on mobile.

- The Instances:
The auto instancing didn't worked as we expected on Quest 2, so the solution from my side were to include my instances system that provides smooth material changes also, it were used to create trash on the floor and other elements, like a complete boat containers collection with variations.

- The Materials:
One of the main challenges to work for Quest 2 titles are all the limitations and compatibility problems you can find on the road.
When came to the project the major issue were the memory was filled on Quest 2, decided to clamp all the settings per platform and do a complete revision of textures and material, created a new master material since were be used later and will save permutations on real time.

Meanwhile tried to use a single master material, sub different materials were created after this to non accumulate all the permutations inside a big single chunk, also can be updated individually and don't affect all the shaders (so prevent massive recompilations).

Included a custom solution from my tiled random materials system so the models on selection can have different textures or materials variations over the world sharing the same drawcall across them, so this can be used with instances.

When created our main open world level since we use baked light we found diverse issues like foliage problems and space problems with the baker, my solution to this were to provide a prebaked atlas texture to store the color of the level and shadows from top view, this were later readed and injected into the foliage materials.

Also the trees occlusion wasn't the best and bake everything wasn't the best deal, so the trees come also with an injected channel of AO for the leafs also coloring.

Camera and Material masking:
The game needed of a class for lerping effects and shader lights across the levels, the implementation ran inside the local player controller component so can be working correctly on each local client without affect networking and such elements, it came with a manager for visible lights and other elements on it in order to accumulate render tasks calls.

Per platform normals, on mobile/quest due the power limiations,saving a lot of GBs on the project and runtime memory, can be picked per use case.
Also the custom numeric, text decal systems atlas based.

Per platform normals, on mobile/quest due the power limiations,saving a lot of GBs on the project and runtime memory, can be picked per use case.
Also the custom numeric, text decal systems atlas based.

Master material well commented main layout, per layer UVs.
The master material is modular and can be use for almost any use case, includes even auto random functions for variation at low cost.

Master material well commented main layout, per layer UVs.
The master material is modular and can be use for almost any use case, includes even auto random functions for variation at low cost.

Foliage and world occlusion shader using top view reference image casting colors and shadows.
Lens were post optimized to lower their usage in key cases, the shader complexity were also reduced.

Foliage and world occlusion shader using top view reference image casting colors and shadows.
Lens were post optimized to lower their usage in key cases, the shader complexity were also reduced.

Master materials main pass, per platform optimized, calibration for colors, normals, brightness and other elements

Master materials main pass, per platform optimized, calibration for colors, normals, brightness and other elements

This is one of the simple light functions to fake lights inside the game for mobile platforms

This is one of the simple light functions to fake lights inside the game for mobile platforms

Decals on world and bullet ones are custom decals system based on instances and pool systems for bullets, and have different shapes per use case, are modular and customizable.

Decals on world and bullet ones are custom decals system based on instances and pool systems for bullets, and have different shapes per use case, are modular and customizable.

The settings for the decals class, this were able to create in runtime decals using layered options drag & drop to the level, or use created materials based on the master shader.

The settings for the decals class, this were able to create in runtime decals using layered options drag & drop to the level, or use created materials based on the master shader.

Particles, materials and shaders for the flashlights and other light elements were made by me too, it includes soft lerping on surfaces due limitations on mobile used a hacky way across shading to get it cast light on dark areas.

Particles, materials and shaders for the flashlights and other light elements were made by me too, it includes soft lerping on surfaces due limitations on mobile used a hacky way across shading to get it cast light on dark areas.

There are even way more elements like interactable billboard were you can paint and monitor pre shading effects made by myself too

There are even way more elements like interactable billboard were you can paint and monitor pre shading effects made by myself too

Flashlight cone preview based on shader to fake light on mobile platforms across the mateirals on the world

Flashlight cone preview based on shader to fake light on mobile platforms across the mateirals on the world

Glow light areas based on Doom papers alike driven by the shader, due the CPU is heavy used on this kind of games

Glow light areas based on Doom papers alike driven by the shader, due the CPU is heavy used on this kind of games

Made tools to auto create materials and set them all automatically for specific models use case like weapons and for general models.
Created a custom illumination and texture captures for topdown projected shadows, kinda alike the system on Crysis 1.

Made tools to auto create materials and set them all automatically for specific models use case like weapons and for general models.
Created a custom illumination and texture captures for topdown projected shadows, kinda alike the system on Crysis 1.

Made a complete manager in CPP to manage individual lights and PP elements were made for the base effects, each class can customize the individual elements.

Made a complete manager in CPP to manage individual lights and PP elements were made for the base effects, each class can customize the individual elements.