We make highly optimized textures without the loss of the quality. We do this by putting some of the textures in the empty RGB-A textures.

UV Map

UV Map

The UV Map in short it is a 2D representation of a 3D object

Base Color Map

The Base Color Map Is Used to Give Your Model Color

Base Color Map
Roughness Map

Roughness Map

The Roughness Map is used to control how reflective your models surface is.

Normal Map

The Normal Map is used to give your model the illusion to give surface detail such as bumps, grooves, and scratches to a model which catch the light as if they are represented by real geometry

Normal Map
Metallic Map

Metallic Map

The Metallic Map Is Used to control how much metallic surface your model has

Ambient Occlusion Map

The Ambient Occlusion Map is used to make your model look more realistic by simulating the soft shadows that should naturally occur when indirect or ambient lighting is cast out onto your scene

Ambient Occlusion Map

We optimize these five textures into two textures

We use two textures with the same quality as the five textures. How we achieve this? We use the unused Red, Green, Blue and Alpha channels in the texture map to save valuable space and therefor optimize the textures. For the a normal map you need Red, Green, and Blue however you can calculate the Blue channel based on the Red and Green channels. Doing this gets you more space for an extra channel that can be used for an other texture map.

Base Color and Roughness Map

CR Map

Color + Roughness Map


Normal + Metallic + Ambient Occlusion

Normal and Metal Ambien Occlusion

Unreal Engine 5.3

material with 5 textures

Using five textures for one material

Most beginners use this to make their materials. Doing it this way is not wrong however there’s a better way to render materials.

Using two textures for one material

From the CR map we use the RGB and A value to get the Base Color and Roughness. Form the NMA map we use the RG, B, A value to get the Normal Metallic and Ambient Occlusion. With a small calculation to get the B value of the Normal form the RG values form the CR map. To do this you multiply by 2 then subtracting by 1 then using the DeriveNormalZ function build in the unreal engine. However there are more ways to get the same result. By appending 0.4 and normalizing that you’ll get the Normal as well. Doing this is less expensive to render but it is also less precise in calculating the B value of the Normal.

Image with compact material rendering with the derive Z function node

Let’s look at the differences in game

Two Barrels on the left has the five textures and on the left has the two textures

In Game Rendering

We have mirrored the models so that you can spot differences much easier.

There aren’t any differences. They look virtually the same, because they are. except that our rendered material takes up less space in your game then the other material.

Our 8K material Uses 265,4 MB.

The other 8K material uses 303,2 MB

Now this doesn’t look like much and roughly 40 MB isn’t much, however if you have 100+ materials it saves you 4 gigabytes.

Check It Out For Your Self

Using The Default 5 Textures

Using Our 2 Optimized Textures

Can’t Spot The Differences?

Great! You Shouldn’t as the materials of the models are virtually the same

Purchase Assets