Tại sao mobile thường dùng ASTC 6x6 thay vì 4x4 hoặc 8x8?
Minh Khoa
Tác giả
Có một câu trả lời rất ngắn:
ASTC 6x6 không đẹp nhất và cũng không nhẹ nhất. Nó được dùng nhiều vì đủ đẹp cho phần lớn asset, nhưng nhẹ hơn 4x4 rất nhiều.
Nói cách khác, 6x6 là điểm bắt đầu an toàn, không phải đáp án đúng cho mọi Texture.
---
1. File PNG nhẹ chưa chắc Texture trong game nhẹ
File PNG 300 KB chỉ là file nguồn nằm trong Project.
Khi game chạy, GPU dùng một format khác để render. Với mobile, format đó thường là ASTC nếu thiết bị hỗ trợ.
Hiểu đơn giản:
PNG/JPG → dùng để lưu và nhập vào Unity
ASTC → dạng GPU đọc khi game đang chạy
Vì vậy, đừng chỉ nhìn dung lượng file PNG. Hãy nhìn format và memory của Texture sau khi build.
2. 4x4, 6x6 và 8x8 khác nhau thế nào?
ASTC chia ảnh thành từng ô để nén.
Hãy tưởng tượng mỗi ô được phát cùng một chiếc bánh:
4x4: ít pixel cùng chia bánh → hình đẹp hơn nhưng nặng.6x6: số pixel vừa phải → chất lượng và dung lượng cân bằng.8x8: nhiều pixel cùng chia bánh → nhẹ hơn nhưng dễ bệt và lem chi tiết.
Với một Texture 1024 × 1024, chưa tính mipmap:
| Format | Memory gần đúng | Nên hiểu là |
|---|---|---|
| --- | ---: | --- |
| ASTC 4x4 | 1.00 MB | Đẹp nhất, nhưng nặng |
| ASTC 6x6 | 0.45 MB | Cân bằng |
| ASTC 8x8 | 0.25 MB | Nhẹ, nhưng dễ xấu |
Một ảnh thì chênh lệch không lớn. Nhưng game có hàng chục Atlas, Character, UI, Background và VFX thì con số sẽ cộng dồn rất nhanh.
3. Vì sao thường chọn 6x6?
Vì 6x6 đứng đúng giữa hai vấn đề:
4x4 → nhìn đẹp, nhưng tốn hơn 6x6 trên 2 lần memory
6x6 → vẫn đủ sạch với đa số asset
8x8 → nhẹ hơn, nhưng dễ lộ lỗi ở viền và chi tiết nhỏ
Trong lúc bắt đầu tối ưu, ta chưa có thời gian ngồi chọn format cho từng ảnh. Dùng 6x6 làm default giúp Project nhẹ đi rõ rệt mà ít có nguy cơ làm hình xấu ngay.