UV Unwrap, Visual Impact, and Texture Channel Packing
Tutorial
·
intermediate
·
+0XP
·
15 mins
·
(97)
Unity Technologies

In this tutorial, we discuss more ways of displaying detail in your 3D mobile application through efficiently working with your model's UV's and using texture channel packing.
Languages available:
1. Best Practices for UV Unwrapping
A UV map projects 2D Textures onto the surface of a 3D model. UV unwrapping is the process of creating a UV map. It’s a best practice to keep UV islands, the individual units of an unwrapped Texture, as straight as possible.
Keeping UV islands as straight as possible comes with the following benefits:
- It makes packing UV islands easier and less space is wasted.
- A straight UV helps prevent the staircase effect on Textures.
- On mobile platforms, Texture space is limited. As such, the Texture size is usually smaller than on a console or PC. Good UV packing ensures that you get the most resolution from your Textures.
- Consider having a slightly distorted UV by keeping the UV straight for better quality Textures.
2. UV Seams
Place UV seams in places that obscure them. Visible Texture seams can look bad on a model. Therefore, split UV islands where the edges are sharp and have a small space between them. This can also help create better normal maps through the baking process.
The following image shows an example of how to use UV unwrapping to maximize Texture space:

3. Optimizing for Visual Impact
The detail you include when creating Textures should be proportionate to the visual impact of that detail. Make sure that you only create details that can be seen.
Phone screens are small, therefore fine-grained detail won’t be visible. Take this into account when creating Textures. For example, you don’t need a 4K Texture with lots of details for a chair that is barely visible in the corner of a room.
In the following screenshot, the small 256x256 pixel Texture on the left has a low level of detail to be used on soldier characters in the sample Scene. The larger image on the right shows the entire Scene, and shows that the low level of Texture detail is sufficient:

In certain cases, you will need to exaggerate and highlight the edges and shading to improve shape readability. Since mobile platforms generally use smaller Textures, it might be hard to capture all of the detail that’s needed within that small space.
For mobile applications, use fewer Textures and bake any extra details into one Texture. This is important because:
- Phone screens are small and some details are better off baked onto the diffuse Texture itself to make sure that those details are visible.
- Elements such as ambient occlusion and small specular highlights can be baked in and then added to the diffuse Texture.
This approach means that you don’t have to rely too much on computationally expensive Shaders and Unity features to get specular highlights and ambient occlusion.
The following screenshot shows details baked into a Texture:

When possible, use grayscale Textures that allow color tinting in the Shader. This saves Texture memory at the cost of creating a custom Shader to perform the tinting.
Be selective with this technique because not all objects look good using this method. It’s easier to apply this to an object that has a uniform color. You can also use RGB masks and then apply Textures that are based on the color range of the mask.
The following image shows a grayscale Texture applied to a tinted pillar:

4. Texture Channel Packing
Use Texture channels to pack multiple Textures into one.
Texture channel packing helps to save Texture memory because you can get three maps into one Texture. This means fewer Texture samplers.
Texture packing is commonly used to pack roughness, smoothness, and/or metallic into one Texture. It can also be applied for any Texture mask.
Use the green channel to store the most important mask. The green channel usually has more bits due to our eyes being more sensitive to green and less sensitive to blue.
The following image shows an example of a Texture that packs ambient occlusion, roughness/smoothness, and metallic data in each available color channel, all in one file:

5. Conclusion
It’s important to identify situations when Texture packing, UV unwrapping, and selective Texture details can be used to optimize your application. Situations that benefit from these techniques are not always obvious, but can boost performance on mobile applications. In the next tutorial, we’ll explore the best practices for using Alpha channels and normal maps for optimization.