Texture sıkıştırma neden gereklidir? ASTC, BC ve ETC2 formatları arasındaki fark nedir?
Cevap
PNG/JPEG disk boyutunu küçültür ama GPU bunları doğrudan okuyamaz; yüklenince tam boyutlu ham veriye (RGBA32) açılır. 2048x2048 RGBA32 bir texture mip'lerle yaklaşık 21 MB tutar. GPU texture sıkıştırma formatları ise blok tabanlıdır ve GPU tarafından sıkıştırılmış halde doğrudan örneklenir; böylece hem bellek hem bant genişliği 4–8 kat azalır.
| Format | Platform | Not |
|---|---|---|
| BC1 (DXT1) | PC, konsol | RGB, 4 bpp; alfa yok veya 1-bit |
| BC3 (DXT5) | PC, konsol | RGBA, 8 bpp |
| BC5 | PC, konsol | İki kanal; normal map için ideal |
| BC7 | PC, konsol (DX11+) | Yüksek kaliteli RGBA, 8 bpp |
| ETC2 | Android (OpenGL ES 3.0+) | RGB/RGBA, ASTC olmayan eski cihazlar için yedek |
| ASTC | Modern iOS ve Android | Değişken blok boyutu (4x4 ile 12x12); kalite/boyut ayarlanabilir |
ASTC'de blok boyutu büyüdükçe bit/piksel düşer: 4x4 = 8 bpp (yüksek kalite), 6x6 ≈ 3.56 bpp (genel kullanım), 8x8 = 2 bpp (uzak veya az önemli içerik). Günümüzde mobilde varsayılan tercih ASTC'dir.
Pratik kurallar:
- Normal map'ler için özel format/ayar kullanın (BC5 veya ASTC normal map modu); renk texture'ı gibi sıkıştırmak artefakt yaratır.
- Keskin kenarlı UI ve gradient'larda blok artefaktları görünebilir; kritik UI için daha düşük blok boyutu veya sıkıştırmasız format seçilebilir.
- Blok formatları için texture boyutları blok boyutunun katı olmalıdır; ikinin kuvveti boyutlar en güvenli seçenektir.
- Unity'de platform bazlı override'lar (Android/iOS sekmesi), Unreal'da texture group ve compression settings ile yönetilir.
- Disk/indirme boyutu için ayrıca Crunch veya Basis Universal (KTX2) gibi süper sıkıştırma katmanları kullanılabilir.
İlgili Grafik & Render soruları
- Forward ve deferred rendering arasındaki fark nedir? Hangisi ne zaman tercih edilir?
- LOD, frustum culling ve occlusion culling nedir?
- Draw call nedir? Batching teknikleri ile draw call sayısı nasıl azaltılır?
- Rendering pipeline nasıl işler? Vertex shader ile fragment shader arasındaki fark nedir?
- Mipmap nedir? Ne gibi faydaları ve maliyetleri vardır?
- Overdraw nedir? Neden performans sorunu yaratır ve nasıl azaltılır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.