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.