Kemas Kini Terakhir: 21 Sep, 2026

Format Fail Imej untuk Pembangun Permainan: DDS, TGA, PNG, dan KTX
Dalam pembangunan permainan, tekstur menyumbang bahagian terbesar bagi penggunaan memori masa jalan dan saiz binaan pemasangan. Sama ada anda sedang membina platformer indie yang bergaya atau mengejar fotorealisme dalam RPG dunia terbuka AAA, cara anda menyimpan, memproses, dan mengendalikan data tekstur secara langsung menentukan kadar bingkai, masa muat, dan keserasian perkakasan.
Kesilapan biasa bagi pemula ialah memperlakukan tekstur permainan seperti grafik web—menganggap bahawa fail ringan di cakera akan menghasilkan prestasi ringan dalam enjin permainan anda. Dalam dunia GPU, realiti masa jalan adalah sepenuhnya berbeza.
Dalam kajian mendalam ini, kami menguraikan empat format fail tekstur dan imej yang paling kritikal dalam pembangunan permainan moden: DDS, TGA, PNG, dan KTX. Kami akan meneliti cara mereka berfungsi, di mana mereka berada dalam aliran kerja aset, dan bila harus menggunakan setiap satu.
Peraturan Emas: Storan Cakera vs. RAM Video (VRAM)
Sebelum menganalisis format individu, pembangun mesti memahami perbezaan asas antara pemampatan storan cakera dan pemampatan blok perkakasan GPU.
1. Pemampatan Cakera (PNG, JPEG, WebP)
Format seperti PNG menggunakan pengekodan entropi tanpa kehilangan (DEFLATE). Walaupun PNG menjimatkan ruang yang sangat besar pada SSD atau pelayan muat turun, GPU moden tidak dapat mengambil sampel fail PNG secara langsung. Apabila enjin permainan anda memuatkan PNG:
- CPU mesti menyahmampatkan fail kepada piksel RGBA 32-bit mentah, tidak mampat dalam memori sistem.
- Bitmap yang tidak mampat dimuat naik ke VRAM.
- Tekstur 2048×2048 menggunakan kira-kira 16 MB VRAM, tanpa mengira sama ada PNG itu berukuran 1 MB atau 3 MB pada cakera.
2. Pemampatan Blok GPU (BCn, ASTC, ETC2)
Format GPU khusus memampatkan blok piksel tetap (biasanya blok 4×4 piksel) ke dalam representasi bit yang lebih kecil. Perkakasan grafik mengambil sampel blok-blok ini secara langsung dalam VRAM tanpa penyahmampatan di sisi CPU:
- Akses rawak VRAM secara langsung tanpa beban penyahmampatan masa jalan.
- Tekstur 2048×2048 yang sama menggunakan BC7/ASTC hanya menggunakan kira-kira 4 MB VRAM (penurunan 75%).
- Mipmaps boleh dibakar terus ke dalam fail kontena.
Kontena seperti DDS dan KTX dibina khusus untuk membungkus format asli GPU ini, manakala PNG dan TGA berfungsi dalam peranan berbeza lebih awal dalam aliran kerja.
1. DDS (Permukaan DirectDraw)
Diperkenalkan oleh Microsoft bersama DirectX 7, format DirectDraw Surface (.dds) merupakan kuda kerja utama industri untuk pembangunan permainan PC, Xbox, dan konsol.
Ciri-ciri Teknikal
- Jenis Kontena: Kontena tekstur GPU asli.
- Pemampatan Disokong: BC1 hingga BC7 (Block Compression / keluarga DXT), RGBA tanpa pemampatan, format float (BC6H untuk HDR).
- Keupayaan Utama: Mipmap pra-bakar, peta kiub, susunan tekstur, tekstur volum (3D).
Mengapa Pembangun Menggunakan DDS
DDS pada dasarnya merupakan dump memori langsung bagi apa yang diperlukan oleh perkakasan grafik. Apabila memuat tekstur DDS dengan mipmap pra-dihasilkan, enjin melangkau pemampatan CPU sepenuhnya dan mengeluarkan salinan memori langsung Direct3D atau Vulkan ke GPU. Ini menghapuskan bottleneck CPU semasa penstriman dan pemuatan tahap.
Kelebihan
- Masa Muat Sangat Pantas: Tiada kitaran pemampatan CPU diperlukan semasa masa jalan.
- Mipmap Pra-Bakar: Penjanaan mipmap luar talian membolehkan penapisan, penajaman, dan normalisasi peta normal yang dikawal artis merentasi LOD.
- Kecekapan VRAM: Menggunakan algoritma pemampatan BC standard industri secara asli.
Kekurangan
- DirectX/Windows Bias: Secara sejarah terikat kepada ekosistem Microsoft, walaupun disokong secara meluas pada enjin desktop moden.
- Lossy Compression Artifacts: Pemampatan blok (terutama BC1 pada peta normal) boleh menghasilkan artifak blok melainkan BC5/BC7 digunakan.
- Limited Mobile Support: GPU mudah alih biasanya lebih suka ASTC atau ETC2 berbanding format BC desktop.
2. TGA (Truevision Targa)
Dicipta pada tahun 1984, TGA (.tga) ialah format fail grafik raster yang tidak dimampatkan atau menggunakan pengekodan panjang jalur (RLE) yang telah menjadi komponen utama dalam aliran kerja selama lebih tiga dekad.
Ciri-ciri Teknikal
- Container Type: Bitmap penulisan / pertukaran yang tidak dimampatkan.
- Bit Depths: 8, 16, 24, dan 32 bit per piksel (RGB + saluran Alpha 8-bit khusus).
- Compression: Tiada atau RLE asas (Run-Length Encoding).
Mengapa Pembangun Menggunakan TGA
TGA dipilih oleh artis teknikal dan pengaturcara enjin kerana kesederhanaan arkitektur yang mutlak. Berbeza dengan PNG, yang menyematkan saluran alpha ke dalam matriks penapisan yang kompleks, TGA mengekalkan data warna dan saluran alpha secara berasingan dan tidak diubah.
Apabila mencipta topeng khusus (contohnya, mengepak Roughness ke dalam Merah, Metallic ke dalam Hijau, Ambient Occlusion ke dalam Biru, dan Height ke dalam Alpha), TGA memastikan tiada pencampuran algoritma halus atau kebocoran warna berlaku antara saluran.
Kelebihan
- Kesetiaan Data Suci: Pemeliharaan nilai saluran yang tepat bit; ideal untuk tekstur ORM (Occlusion-Roughness-Metallic) yang dipaketkan dalam saluran.
- Penguraian Ringkas: Alat paip dalam rumah, pengeksport khusus, dan skrip automatik dapat membaca dan menulis fail TGA dengan baris kod yang minimum.
- Sokongan DCC Universal: Maya, 3ds Max, Blender, Substance 3D, dan Photoshop menawarkan eksport TGA secara asli tanpa masalah.
Kekurangan
- Saiz Fail Besar: Jejak yang besar dalam repositori Git/Perforce dan kelajuan muat turun yang perlahan bagi pasukan teragih.
- Tidak Sesuai untuk Masa Jalan: Tidak dapat digunakan secara langsung oleh GPU sebagai format termampat; mesti ditukar oleh enjin semasa proses memasak.
3. PNG (Portable Network Graphics)
PNG (.png) ialah format imej tanpa kehilangan yang paling dikenali di dunia, menggunakan pemampatan zlib/DEFLATE untuk mengepak imej 24-bit dan 32-bit yang kaya ke dalam fail yang sangat kecil.
Ciri-ciri Teknikal
- Jenis Kontena: Format penulisan dan penghantaran tanpa kehilangan.
- Kedalaman Bit: Sehingga 16 bit per saluran (48-bit RGB, 64-bit RGBA).
- Pemampatan: Algoritma DEFLATE tanpa kehilangan.
Mengapa Pembangun Menggunakan PNG
PNG berfungsi sebagai format pengedaran utama untuk aset UI, sprite, bahan promosi, dan tekstur sumber antara. Untuk permainan 2D yang dibuat dalam Unity, Godot, atau Unreal Engine, PNG menyediakan ketepatan piksel yang tajam dengan topeng kelegapan yang bersih.
Kelebihan
- Jejak Repositori Kompak: Mengurangkan saiz checkout projek dengan ketara berbanding TGA yang tidak dimampatkan.
- Kualiti Warna Tanpa Kehilangan: Tiada artifak pemampatan pada tepi kontras tinggi dan ilustrasi gaya vektor.
- Kelegapan Alpha Asli: Sokongan saluran alpha 8-bit yang bersih untuk elemen UI lutsinar kompleks dan helaian partikel.
Kekurangan
- Penyahkodan CPU Berat: Menyahmampat PNG besar semasa runtime memperlambat kadar bingkai dan meningkatkan penggunaan memori sebelum muat naik ke GPU.
- Masalah Alpha Premultiplied: Sesetengah penyunting imej membuang data RGB dalam piksel yang sepenuhnya telus, yang merosakkan kebocoran tekstur dan menyebabkan garis luar gelap di sekitar sprite.
- Penjimatan VRAM Sifar: Menyahkompres ke memori mentah 32-bit penuh di dalam GPU melainkan dimakan oleh pemproses tekstur enjin.
4. KTX (Khronos Texture) dan KTX 2.0
Dibangunkan oleh Khronos Group—badan pengawal di sebalik Vulkan, OpenGL, dan glTF—KTX (.ktx) dan KTX 2.0 mewakili standard terbuka moden untuk tekstur GPU merentas platform.
Ciri-ciri Teknikal
- Jenis Kontena: Kontena tekstur GPU terbuka yang diperkatakan.
- Sokongan Pemampatan: Basis Universal (ETC1S dan UASTC), ASTC, BCn, ETC2.
- Keupayaan Utama: Transkod tekstur universal, mipmaps, cubemaps, tekstur array, integrasi glTF.
Mengapa Pembangun Menggunakan KTX
KTX 2.0 menyelesaikan dilema pemampatan merentas platform yang terpecah. Secara tradisional, pembangun terpaksa menghantar DDS (BCn) untuk desktop/konsol dan ASTC/ETC2 untuk mudah alih/tablet.
Dengan KTX 2.0 dan Basis Universal:
- Anda menyimpan tekstur dalam format yang padat dan boleh dimampatkan secara universal.
- Pada masa jalan, perkakasan klien menukar kod fail secara langsung ke dalam format blok yang dipilih oleh GPU tempatan (contohnya, BC7 pada GeForce RTX, ASTC pada iPhone, ETC2 pada peranti Android lama).
- Supercompression (Zstandard) menghasilkan fail yang lebih kecil daripada JPEG pada cakera yang menukar kod menjadi blok VRAM asli dalam milisaat.
Kelebihan
- Standard Rentas Platform Sebenar: Berjalan lancar pada Vulkan, WebGL, WebGPU, dan peranti mudah alih.
- Transkod Basis Universal: Satu binaan aset tunggal menyasarkan desktop, mudah alih, dan penyemak imbas tanpa eksport tekstur berganda.
- Rakan GlTF Kelas Pertama: Penting untuk pengalaman web 3D moden, enjin metaverse, dan paip rendering terbuka.
Kekurangan
- Kematangan Alat Saluran: Memerlukan rantaian binaan moden (seperti
toktxdari suite KTX-Software); enjin proprietari lama mungkin tidak mempunyai integrasi siap pakai. - Overhead Transkod: Kelewatan transkod masa jalan yang sedikit (walaupun jauh lebih cepat berbanding penyahkod perisian PNG penuh).
Perbandingan Head-to-Head
| Ciri / Kriteria | DDS | TGA | PNG | KTX / KTX 2.0 |
|---|---|---|---|---|
| Kes Penggunaan Utama | Runtime PC/Konsol | Pengarang Sumber & Topeng | Sprite 2D & Seni Sumber | Runtime Lintas Platform & Web |
| Pensampelan GPU Terus | Ya (Asli) | Tidak | Tidak | Ya (Asli atau Ditraskod) |
| Pemampatan VRAM | Ya (BC1–BC7) | Tidak (Tidak Dimampatkan) | Tidak (Tidak Dimampatkan) | Ya (ASTC, BCn, Basis) |
| Mipmaps Pra-Bakar | Ya | Tidak | Tidak | Ya |
| Saiz Cakera | Sederhana | Sangat Tinggi | Kecil | Sangat Kecil (Basis + Zstandard) |
| Ekosistem | DirectX / Enjin Desktop | Perisian DCC / Saluran Sumber | Enjin Web & 2D Universal | Vulkan, WebGPU, glTF |
Panduan Praktikal: Membina Saluran Aset Ideal
Bagaimana anda harus menyusun empat format ini dalam alur produksi komersial? Berikut cara studio terkemuka menyusun alur tekstur mereka:
[DCC & Authoring] [Engine Ingestion / Cook] [Runtime GPU Target]
Substance / Photoshop / Blender Unreal / Unity / Custom Toolset VRAM Memory Blocks
• TGA (Clean packed masks) ──────► Build Engine Texture Cooker ──────► DDS (DirectX / Windows / Xbox)
• PNG (UI & 2D Sprites) ──────► Generates Mipmaps & Block ──────► KTX2 (Vulkan / WebGPU / Mobile)
• PSD / EXR (HDR & masters) ──────► Compression Automatically
- Sumber Aset: Simpan fail utama dan data berpaket saluran dalam TGA atau PNG dalam repositori projek anda untuk menjamin maklumat warna yang tidak rosak.
- Binaan PC & Konsol: Proses tekstur sumber anda menjadi fail DDS menggunakan BC7 untuk peta albedo/normal butiran tinggi dan BC4/BC5 untuk topeng saluran tunggal dan dwi-saluran.
- Binaan Lintas Platform, Web & Mudah Alih: Bungkus aset 3D masa jalan ke dalam KTX 2.0 untuk memanfaatkan transkod universal merentasi Android, iOS, dan WebGPU tanpa mengekalkan cabang seni yang berasingan.
- Antara Muka Pengguna: Simpan tekstur UI masa jalan sama ada dalam format tidak termampat yang jelas atau atlas enjin tanpa kehilangan yang dihasilkan daripada fail sumber PNG beresolusi tinggi.
Soalan Lazim (FAQ)
Q1. Bolehkah enjin permainan mengambil sampel PNG secara langsung dari memori video?
A1: Tidak; GPU tidak dapat mengurai pemampatan PNG, jadi enjin mesti menyahmampat fail PNG menjadi bitmap mentah 32-bit dalam memori sebelum memuat naiknya ke VRAM.
Q2. Mengapa artis teknikal lebih suka TGA berbanding PNG untuk pembungkusan topeng?
A2: TGA menyimpan data saluran yang tulen dan tidak dimampatkan tanpa kebocoran warna atau penapisan ketelusan tepi yang merosakkan merentasi saluran RGB dan Alpha secara individu.
Q3. Algoritma pemampatan blok mana yang harus saya gunakan dalam kontena DDS untuk peta normal?
A3: Gunakan BC5 (pemampatan ruang tangen dua saluran) untuk peta normal bagi mengekalkan kelengkungan permukaan yang bersih tanpa artifak blok BC1 standard.
Q4. Apa yang menjadikan KTX 2.0 lebih baik daripada DDS untuk permainan merentas platform?
A4: KTX 2.0 menyokong Basis Universal, yang membolehkan satu fail menukar secara langsung kepada format BCn desktop atau format ASTC/ETC mudah alih semasa pelancaran.
Q5. Adakah pra-pembakaran mipmap dalam fail DDS atau KTX meningkatkan saiz cakera?
A5: Ya, termasuk rantaian mipmap penuh menambah kira-kira 33% data mentah tambahan kepada fail, tetapi ia menghapuskan berkelip semasa masa jalan, meningkatkan kebersamaan cache, dan meningkatkan prestasi rendering GPU.