During development of Blackout, the first Battle Royale mode in Call of Duty ( you can see the still pretty hype trailer here: https://www.youtube.com/watch?v=BjiaMBk6rHk), we looked at optimizing the memory footprint of our assets while maintaining an acceptable amount of detail.

The competition at the time, namely PUBG, was very weak visually and suffered from a lot of loading and memory issues.

One of the main benefits of scanned assets, especially organic ones such as rocks, come from their general shape – a lot of curves, a lot of angles and a lot of variation. Surface variation that is applied on assets uniformly tend to look fake and CG. We don’t see uniform detail in real life, especially when it comes to rocks that feature a lot of erosion and interaction with nature  – which leads to areas being smoother in certain areas.

In our passes to reduce memory, we examined what the true benefit of keeping those 8K texture sets was, over smaller textures with procedural blending. We noted that for the most part the detail, specifically in the normal map was mostly generic noise – outside of larger forms. A lot of the Treyarch Call of Duty games were built through layered materials and textures already – with procedural noise and material settings to help fine tune and give them more unique / hand authored looks. It made sense to take that approach for the very bespoke scanned assets coming in.

As our artists started building out large maps, our partners at Raven has been working on scanning assets, such as rocks, for use in our BR map – all high quality but even when compressed took over 12mb of memory (which for a 2x1x1 meter rock is a bit much).  Working with our main environment artist, Andy Livingston, we tackled the issue through a number of unique concepts – reducing memory while maintaining or improving the quality of the assets.

We can take a look at MegaScans’ library for good examples of photogrammetry assets that show all the backed in high-frequency detail. Below is the lit and worldNormal view of a typical scanned asset with a 4k texture set (in Unreal):

It looks good, but if we consider the number of rock assets a large map might contain, a 4K normal map adds up very fast. We can tap into the curvature of the normal map via length(pixelNormal.xy). You can read a little more about it here: https://thebookofshaders.com/glossary/?search=length

We find that we get a lot of variance that we can use to mask in detail normals on top of the original asset. Since we care only about the large forms and the general noise – reducing the normal resolution works in our favor (we get a blurry mask, and we reduce the base normal in one go).

We see below, that without tweaking we get a lot of large details from the base normal that works perfectly fine as a blend mask.

Having a detail normal from scans comes in handy here – but we also found that general noise worked really, really well. After all, this is micro-detail of a rough surface. For this example, we look at the asset with a base normal at 512x and a 512x detail normal tiled on-top.

With a bit of tweaking, it’s hard for the player to know which was the original asset, as the curvature provides a good way to creating procedural organic masks. For an additional mask, length(worldNormal.xyz)works especially well to capture form changes in the geometry.

Below we can see the blended result (left) and the original asset (right).

There are some noticeable changes between the two – but in the grand scheme of things they are arguably fairly minor.

If the player looks at these assets side by side, they’d be hard pressed to tell which one is the original. But for the game, one uses a 4K normal map – the other uses two 512x textures for a considerable memory reduction. Under magnification, differences can be spotted due to the lack of detail in the base normal, but under normal circumstances detail and quality has been preserved.

Generally speaking, any rough material , which has a lot of high-frequency noise such as concrete, asphalt, tree bark can go through such a reduction that doesn’t impact the final look of the game much.

While a basic application of detail normals works and is used in most games, it fails to produce the organic weather that assets typically exhibit. Adding a tiny bit of logic to blending helps produce more natural assets without wasting artist time or memory in authoring masks.

By fmnoor

Leave a Reply

Your email address will not be published. Required fields are marked *