Website powered by

Rigs shaders - Macau

The Macau level of Rigs (2016) was the one where I had a fairly large focus on shaders. This was largely due to scheduling reasons.
We were also able to plan material usage a little bit more for this level which possibly kept the total number of shaders used lower than some other levels. It was also a level that was fairly light on building blocks (instanced reused detailed assets) so having effective tiling shaders was very important.

This was a key shader for the level which contained essentially every tiling trim we might need for all our materials, this kept draw calls down a lot. This shader also supports sand build up and flexible construction lines through vertex colours.

This was a key shader for the level which contained essentially every tiling trim we might need for all our materials, this kept draw calls down a lot. This shader also supports sand build up and flexible construction lines through vertex colours.

This was a hardened epoxy floor shader that covered a lot of the flooring. This was an annoying shader in that it looked pretty good if you looked at it in Maya but often didn't get much interesting play of light across it in game.

This was a hardened epoxy floor shader that covered a lot of the flooring. This was an annoying shader in that it looked pretty good if you looked at it in Maya but often didn't get much interesting play of light across it in game.

Here is a custom roulette wheel shader I made for the level centrepiece. There's some UV maths to do the number highlighting. We also ended up using a modified version of this on some of the surround aerial tunnels.

Here is a custom roulette wheel shader I made for the level centrepiece. There's some UV maths to do the number highlighting. We also ended up using a modified version of this on some of the surround aerial tunnels.

Here's a screenshot showing the epoxy floor, roulette wheel and a lot of trims viewed in game. I also did a betting odds shader that hotswapped text depending on game mode and which team/rig you were in.

Here's a screenshot showing the epoxy floor, roulette wheel and a lot of trims viewed in game. I also did a betting odds shader that hotswapped text depending on game mode and which team/rig you were in.

This is a versatile coloured panel shader I made which ended up being used a lot in the interior sections. We knew this needed some play of light across it so it is designed to look like a kind of glossy plastic or epoxy.

This is a versatile coloured panel shader I made which ended up being used a lot in the interior sections. We knew this needed some play of light across it so it is designed to look like a kind of glossy plastic or epoxy.

We wanted the ability to swap materials quite easily so this is a concrete shader that follows the same UV layout as the previous panel shader. This didn't end up seeing as much use as expected.

We wanted the ability to swap materials quite easily so this is a concrete shader that follows the same UV layout as the previous panel shader. This didn't end up seeing as much use as expected.

There is a lot of filler grey material in the level. I made a shader that had construction lines that can be vertex coloured off. The actual material is a speckled hardened graphite but it can be hard to get much play of light across big areas.

There is a lot of filler grey material in the level. I made a shader that had construction lines that can be vertex coloured off. The actual material is a speckled hardened graphite but it can be hard to get much play of light across big areas.

This is a relief mapped windows shader. It was much cheaper to float a decal for this than try and cut in a window in geometry.

This is a relief mapped windows shader. It was much cheaper to float a decal for this than try and cut in a window in geometry.

Here is a screenshot showing a few of the panel shaders being used together.

Here is a screenshot showing a few of the panel shaders being used together.

Sand was an important part of the level but not as key as in Dubai or Nevada. We ended up using a slightly simpler shader in Macau with no projected UVs. This just has a vertex blend between two different detail states.

Sand was an important part of the level but not as key as in Dubai or Nevada. We ended up using a slightly simpler shader in Macau with no projected UVs. This just has a vertex blend between two different detail states.

Here we have an asphalt shader that is designed to blend seamlessly into sand. There is a projected mask texture to define sand edges and paint lines on the asphalt.

Here we have an asphalt shader that is designed to blend seamlessly into sand. There is a projected mask texture to define sand edges and paint lines on the asphalt.

When viewed up close I used a height map and some UV wibble to disguise the low resolution nature of the projected asphalt mask.

When viewed up close I used a height map and some UV wibble to disguise the low resolution nature of the projected asphalt mask.

Here you can see the asphalt and sand materials blending in together fairly effectively.

Here you can see the asphalt and sand materials blending in together fairly effectively.

The centre undergroud section of the level needed some expensive looking marble. It took a few goes to decide on a panel layout that would sensibly line up with the pillar geometry.

The centre undergroud section of the level needed some expensive looking marble. It took a few goes to decide on a panel layout that would sensibly line up with the pillar geometry.

Here you can see the marble floor mapped in to the level. You can also see the vertex coloured sand blend applied to this material.

Here you can see the marble floor mapped in to the level. You can also see the vertex coloured sand blend applied to this material.

One key shader for this level was the hologram centre piece. For this we used a custom low poly proxy of a rig and a complex shader that includes a few animated effects and vertex displacement. This shader turns opaque at distance to help readability.

One key shader for this level was the hologram centre piece. For this we used a custom low poly proxy of a rig and a complex shader that includes a few animated effects and vertex displacement. This shader turns opaque at distance to help readability.

The water shader for the surround was very custom as we knew we needed reflections that lined up properly which is hard without SSR. Instead I made a shader that was actually transparent and gradually exposed what was underneath at glancing angles.

The water shader for the surround was very custom as we knew we needed reflections that lined up properly which is hard without SSR. Instead I made a shader that was actually transparent and gradually exposed what was underneath at glancing angles.

Here you can see the surround is actually duplicated for reflections. I had to make a custom dithered alpha (8x8 bayer matrix) shader for the transparent surround elements so that they sorted properly with the transparent water plane.

Here you can see the surround is actually duplicated for reflections. I had to make a custom dithered alpha (8x8 bayer matrix) shader for the transparent surround elements so that they sorted properly with the transparent water plane.

I made the gold chrome exterior glass for the hotel. I found that I had to actually bend the normals of the glass in the shader to get the required interesting surround reflections. Otherwise the angles meant you only saw sky reflections.

I made the gold chrome exterior glass for the hotel. I found that I had to actually bend the normals of the glass in the shader to get the required interesting surround reflections. Otherwise the angles meant you only saw sky reflections.

Underneath the glass I made a shader that has some randomised self illuminated room interiors. These work well as long as you don't look too closely. These were also used in the interior of the hotel.

Underneath the glass I made a shader that has some randomised self illuminated room interiors. These work well as long as you don't look too closely. These were also used in the interior of the hotel.