Forza Horizon 5 is an open-world racing game, released on the 4th of November 2021 and developed by Playground Games.
It launched on Xbox Series X|S, Xbox One and PC.
My main areas of focus on this project were:
- Ownership over the visual aspects of Tech Art. Creating, maintaining and improving all our shaders, materials
and visual features from start to finish.
- Consistently working with other teams to push visual improvements and new features to completion, while
providing a solid workflow and tools for content teams.
- Providing support for both content and engineering teams, working with proprietary engine and tools.
- Representing the Tech Art team in cross-discipline endeavours.
Investigating and problem-solving ‘black box’ features and pipelines, not under any team’s specific domain.
- Building and maintaining libraries used across multiple studios and projects.
As a result, nearly everything in the world is supported by a shader I created or overhauled.
Some of the highlights of that work are detailed below.
We wanted to push our terrain quality much further for FH5, offering detail up close and retaining quality in the distance.
A big challenge was keeping the fidelity up in massive vistas, seamlessly switching to cheaper versions of the shader as distance increases.
Another challenge was that all features found across the world's terrain and seasons had to be supported in one shader. This includes deformables, rivers, sand, snow, and other special surfaces.
To add depth up close we used a mix of parallax/RCSM and ground cover meshes (vegetation and small rocks).
The ground cover automatically adapts to the underlying terrain surface, matching its visuals to prevent harsh model intersections.
Some of the features of the terrain system include:
- Unlimited amount of texture sets can be blended together at any time.
- Parallax and RCSM for depth.
- Deformable mud/sand.
- Special visual effects for sand, snow, etc.
- Macro variation textures.
- Seamless transitions between shader LODs to support massive vistas.
For the roads we wanted to increase our story-telling through more texture variation as well as reduce the visual disconnect between roads and terrain.
To support this we mixed the terrain and road system, allowing artists to use a practically infinite amount of texture sets and blending the road and terrain seamlessly. This also allows artists to 'spill' terrain over onto the roads.
Some of the road shader features include:
- Unlimited amount of texture sets per road.
- Dedicated micro detail textures.
- Mid-level variation map.
- Macro modulate/variation textures.
- Seamless blending and overlap between roads and terrain.
- Parallax/RCSM for detail depth.
With FH5 we had a large push for dynamic weather, including rain and storms. To support this I overhauled our wetness system.
The system dynamically wettens every asset in the world, including roads, terrain, buildings and assets.
This changes with the in-game seasons and weather, as well as by rivers and lakes drying or expanding between seasons.
Surfaces darken and glossen as they get wet, eventually beginning to puddle in crevices.
The visual changes are controlled by porosity maps or values per asset.
To sell the visuals of our storms I created new wind shaders.
These use anchor points generated in 3dsMax using SpeedTree data and baked into the vertex data of the model.
This allows the vertex shader to deform the trees with minimal risk of stretching.
The effect was ultimately somewhat limited by low polycounts and aggressive LODing but did its job well.
We wanted to allow the geology team to create massive rock modules, magnitudes bigger than what we had on FH4 while increasing the visual fidelity up close.
Another goal was reducing the visible seam between rocks and terrain.
To support this I created a shader with multiple layers at different scales.
- A micro-detail modulate texture.
- Affects normal, AO and roughness.
- Up to 5 tiling Mid texture sets on one model.
- This provides the overall look of the material.
- Uses Array Textures for performance.
- Macro texture set.
- Unique UV bake.
- Affects Normal, AO, Roughness and Diffuse.
- This provides the overall shape detail for the model as a whole.
- Cross-instance macro variation.
- Planar or tri-planar projected.
- Offers seamless variation across multiple instances and models, unifying them and hiding intersections.
- No size limit.
- Dynamic up-blend.
- User chooses whether to match to the terrain below for a seamless intersection or blend to a dedicated texture, e.g. snow.
Similar to our geology, we wanted to offer more seamless variation and detail to our buildings.
As a result the building shader supports:
- Up to 5 Mid texture sets using Array Textures.
- Macro texture set.
- Per-instance swatch-tinting colour variation.
- Large scale variation across multiple instances.
- Can influence the mid-texture blending, allowing full material variation between instances of the same model.
- Support for image overlays such as murals.
For our cars we have a seperate shader and material library, used across 700+ cars and multiple studios and projects.
Part of my responsibility was to support new cars and shader requests coming in as well as make sure any changes don't risk altering existing content.
This work always has extra scrutiny as it requires sign-off from the manufacturers or license holders.