อัปเดตล่าสุด: 21 ก.ย., 2026

รูปแบบไฟล์ภาพสำหรับนักพัฒนาเกม: DDS, TGA, PNG, และ KTX
ในการพัฒนาเกม, texture มีสัดส่วนเป็นส่วนที่ใหญ่ที่สุดของการใช้หน่วยความจำขณะรันและขนาดของไฟล์ติดตั้ง. ไม่ว่าคุณจะกำลังสร้างแพลตฟอร์มเกมสไตล์อินดี้หรือผลักดันความเป็นภาพถ่ายจริงในเกม RPG แบบเปิดโลกระดับ AAA, วิธีที่คุณจัดเก็บ, ประมวลผล, และนำเข้าข้อมูล texture จะกำหนดอัตราเฟรม, เวลาโหลด, และความเข้ากันได้ของฮาร์ดแวร์โดยตรง.
ความผิดพลาดทั่วไปของผู้เริ่มต้นคือการถือว่า texture ของเกมเหมือนกับกราฟิกเว็บ—สมมติว่าไฟล์ที่มีขนาดเล็กบนดิสก์จะทำให้ประสิทธิภาพในเอนจินเกมก็เบาเช่นกัน. ในโลกของ GPU, ความเป็นจริงขณะรันนั้นแตกต่างอย่างสิ้นเชิง.
ในการสำรวจเชิงลึกนี้, เราจะวิเคราะห์สี่รูปแบบไฟล์ texture และภาพที่สำคัญที่สุดในการพัฒนาเกมสมัยใหม่: DDS, TGA, PNG, และ KTX. เราจะตรวจสอบว่าพวกมันทำงานอย่างไร, อยู่ในขั้นตอนใดของสายงานสินทรัพย์, และเมื่อใดควรใช้แต่ละรูปแบบ.
กฎทอง: การจัดเก็บบนดิสก์ vs. หน่วยความจำวิดีโอ (VRAM)
ก่อนที่จะแยกรายละเอียดของแต่ละรูปแบบ, นักพัฒนาต้องเข้าใจความแตกต่างพื้นฐานระหว่าง การบีบอัดการจัดเก็บบนดิสก์ และ การบีบอัดบล็อกฮาร์ดแวร์ของ GPU.
1. การบีบอัดดิสก์ (PNG, JPEG, WebP)
รูปแบบเช่น PNG ใช้การเข้ารหัสเอนโทรปีแบบไม่สูญเสีย (DEFLATE). แม้ว่า PNG จะประหยัดพื้นที่จำนวนมหาศาลบน SSD หรือเซิร์ฟเวอร์ดาวน์โหลด, GPU สมัยใหม่ ไม่สามารถสุ่มตัวอย่างไฟล์ PNG โดยตรง. เมื่อเอนจินเกมของคุณโหลด PNG:
- CPU ต้องทำการแตกไฟล์เป็นพิกเซล RGBA 32 บิตแบบดิบและไม่บีบอัดในหน่วยความจำระบบ.
- บิตแมพที่ไม่ได้บีบอัดจะถูกอัปโหลดไปยัง VRAM.
- เทกเจอร์ขนาด 2048×2048 ใช้พื้นที่ประมาณ 16 MB ของ VRAM ไม่ว่าไฟล์ PNG จะมีขนาด 1 MB หรือ 3 MB บนดิสก์ก็ตาม.
2. การบีบอัดบล็อก GPU (BCn, ASTC, ETC2)
รูปแบบ GPU เฉพาะจะบีบอัดบล็อกพิกเซลที่กำหนด (โดยทั่วไปคือบล็อกพิกเซล 4×4) ให้เป็นการแทนค่าบิตที่เล็กลง ฮาร์ดแวร์กราฟิกจะสุ่มตัวอย่างบล็อกเหล่านี้โดยตรงใน VRAM โดยไม่ต้องทำการแตกไฟล์บน CPU:
- การเข้าถึง VRAM แบบสุ่มโดยตรงโดยไม่มีค่าใช้จ่ายการแตกไฟล์ในระหว่างทำงาน.
- เทกเจอร์ 2048×2048 เดียวกันที่ใช้ BC7/ASTC ใช้เพียง ประมาณ 4 MB ของ VRAM (ลดลง 75%).
- Mipmaps สามารถฝังลงในไฟล์คอนเทนเนอร์โดยตรงได้.
คอนเทนเนอร์เช่น DDS และ KTX ถูกสร้างขึ้นโดยเฉพาะเพื่อห่อหุ้มรูปแบบ GPU‑native เหล่านี้ ในขณะที่ PNG และ TGA ทำหน้าที่ที่แตกต่างกันในขั้นตอนก่อนหน้า.
1. DDS (DirectDraw Surface)
แนะนำโดย Microsoft ควบคู่กับ DirectX 7, รูปแบบ DirectDraw Surface (.dds) เป็นเครื่องมือหลักที่ไม่มีข้อโต้แย้งในอุตสาหกรรมสำหรับการพัฒนาเกมบน PC, Xbox และคอนโซล.
ลักษณะทางเทคนิค
- ประเภทคอนเทนเนอร์: ตัวคอนเทนเนอร์เทกซ์เจอร์ GPU แบบเนทีฟ.
- การบีบอัดที่รองรับ: BC1 ถึง BC7 (Block Compression / DXT family), RGBA ไม่บีบอัด, รูปแบบ float (BC6H สำหรับ HDR).
- ความสามารถหลัก: Mipmap ที่เตรียมไว้ล่วงหน้า, cube map, อาร์เรย์เทกซ์เจอร์, เทกซ์เจอร์ปริมาณ (3D).
ทำไมนักพัฒนาถึงใช้ DDS
DDS โดยพื้นฐานคือการดัมพ์หน่วยความจำโดยตรงของสิ่งที่ฮาร์ดแวร์กราฟิกต้องการ เมื่อโหลดเทกซ์เจอร์ DDS ที่มี mipmap สร้างล่วงหน้า, เอนจินจะข้ามการดีคอมเพรสของ CPU อย่างสมบูรณ์และทำการคัดลอกหน่วยความจำโดยตรงผ่าน Direct3D หรือ Vulkan ไปยัง GPU สิ่งนี้ช่วยขจัดคอขวดของ CPU ระหว่างการสตรีมและการโหลดระดับ.
ข้อดี
- เวลาโหลดที่เร็วพุ่ง: ไม่ต้องใช้รอบการดีคอมเพรสของ CPU ใด ๆ ในขณะรันไทม์.
- Mipmaps ที่เตรียมไว้ล่วงหน้า: การสร้าง mipmap แบบออฟไลน์ทำให้ศิลปินสามารถควบคุมการกรอง, การเพิ่มความคม, และการทำให้แผนที่ปกติเป็นมาตรฐานข้าม LODs.
- ประสิทธิภาพ VRAM: ใช้อัลกอริทึมการบีบอัด BC มาตรฐานอุตสาหกรรมโดยเนทีฟ.
ข้อเสีย
- DirectX/Windows Bias: เคยผูกพันกับระบบนิเวศของ Microsoft อย่างเป็นประวัติศาสตร์ แม้จะได้รับการสนับสนุนอย่างกว้างขวางบนเครื่องยนต์เดสก์ท็อปสมัยใหม่.
- Lossy Compression Artifacts: การบีบอัดบล็อก (โดยเฉพาะ BC1 บนแผนที่ปกติ) สามารถทำให้เกิดลักษณะบล็อกได้หากไม่ได้ใช้ BC5/BC7.
- Limited Mobile Support: GPU บนมือถือมักจะชื่นชอบ ASTC หรือ ETC2 มากกว่ารูปแบบ BC ของเดสก์ท็อป.
2. TGA (Truevision Targa)
สร้างขึ้นในปี 1984, TGA (.tga) เป็นรูปแบบไฟล์กราฟิกเรสเตอร์ที่ไม่มีการบีบอัดหรือใช้การเข้ารหัสความยาวรัน (RLE) ซึ่งได้เป็นส่วนสำคัญของกระบวนการทำงานอย่างมั่นคงมานานกว่าสามทศวรรษ.
ลักษณะทางเทคนิค
- Container Type: บิตแมพสำหรับการสร้างและแลกเปลี่ยนที่ไม่มีการบีบอัด.
- Bit Depths: 8, 16, 24, และ 32 บิตต่อพิกเซล (RGB + แชนแนลอัลฟา 8 บิตแยกเฉพาะ).
- Compression: ไม่มีหรือ RLE พื้นฐาน (Run-Length Encoding).
ทำไมนักพัฒนาถึงใช้ TGA
TGA ได้รับความนิยมจากศิลปินเทคนิคและโปรแกรมเมอร์เอนจินเนื่องจากความเรียบง่ายของสถาปัตยกรรมอย่างแท้จริง แตกต่างจาก PNG ที่ฝังแชนแนลอัลฟาเข้าไปในเมทริกซ์การกรองที่ซับซ้อน TGA จะเก็บข้อมูลสีและแชนแนลอัลฟาแยกจากกันอย่างสมบูรณ์และไม่ถูกแก้ไข.
เมื่อสร้างมาสก์แบบกำหนดเอง (เช่น การบรรจุ Roughness ไปยังสีแดง, Metallic ไปยังสีเขียว, Ambient Occlusion ไปยังสีน้ำเงิน, และ Height ไปยัง Alpha) TGA จะรับประกันว่าไม่มีการผสมผสานเชิงอัลกอริทึมที่ละเอียดอ่อนหรือการรั่วสีระหว่างช่องสีเกิดขึ้น
ข้อดี
- ความแม่นยำของข้อมูลที่บริสุทธิ์: การรักษาค่าช่องสีแบบบิตเท่ากันอย่างแม่นยำ; เหมาะสำหรับเทกเจอร์ที่บรรจุช่อง ORM (Occlusion-Roughness-Metallic)
- การพาร์สที่ง่ายดาย: เครื่องมือพายป์ไลน์ภายใน, ตัวส่งออกแบบกำหนดเอง, และสคริปต์อัตโนมัติสามารถอ่านและเขียนไฟล์ TGA ด้วยบรรทัดโค้ดที่น้อยที่สุด
- การสนับสนุน DCC สากล: Maya, 3ds Max, Blender, Substance 3D, และ Photoshop มีการส่งออก TGA แบบเนทีฟและไม่มีปัญหา
ข้อเสีย
- ขนาดไฟล์มหาศาล: มีพื้นที่ใช้จ่ายมากในที่เก็บ Git/Perforce และความเร็วการดาวน์โหลดช้าในทีมที่กระจาย
- ไม่เหมาะสำหรับการทำงานแบบเรียลไทม์: ไม่สามารถใช้โดยตรงโดย GPU ในรูปแบบบีบอัด; ต้องแปลงโดยเอนจินในขั้นตอนการคุก
3. PNG (Portable Network Graphics)
PNG (.png) คือรูปแบบภาพ lossless ที่เป็นที่รู้จักมากที่สุดในโลก, ใช้การบีบอัด zlib/DEFLATE เพื่อบรรจุภาพ 24-bit และ 32-bit ที่มีความละเอียดสูงให้เป็นไฟล์ขนาดเล็กอย่างน่าประหลาดใจ
ลักษณะทางเทคนิค
- ประเภทคอนเทนเนอร์: รูปแบบการสร้างและส่งมอบแบบ lossless
- ความลึกบิต: สูงสุด 16 บิตต่อช่อง (RGB 48 บิต, RGBA 64 บิต).
- การบีบอัด: อัลกอริทึม DEFLATE แบบไม่สูญเสียข้อมูล.
ทำไมนักพัฒนาถึงใช้ PNG
PNG ทำหน้าที่เป็นรูปแบบการแจกจ่ายหลักสำหรับทรัพยากร UI, สไปรท์, สื่อส่งเสริมการขาย, และเทกเจอร์ต้นฉบับระดับกลาง. สำหรับเกม 2D ที่สร้างด้วย Unity, Godot หรือ Unreal Engine, PNG ให้ความคมชัดของพิกเซลที่ชัดเจนพร้อมมาสก์ความโปร่งใสที่บริสุทธิ์.
ข้อดี
- ขนาดคลังข้อมูลกะทัดรัด: ลดขนาดการเช็คเอาท์ของโปรเจกต์อย่างมากเมื่อเทียบกับ TGA ที่ไม่ได้บีบอัด.
- คุณภาพสีแบบไม่สูญเสีย: ไม่มีศิลปะการบีบอัดบนขอบที่มีคอนทราสต์สูงและภาพประกอบสไตล์เวกเตอร์.
- ความโปร่งใสอัลฟาแบบเนทีฟ: รองรับช่องอัลฟา 8 บิตที่สะอาดสำหรับองค์ประกอบ UI ที่โปร่งแสงซับซ้อนและชีตพาร์ติเคิล.
ข้อเสีย
- การถอดรหัสด้วย CPU หนัก: การแตกไฟล์ PNG ขนาดใหญ่ในขณะรันไทม์ทำให้เฟรมเรตชะงักและการใช้หน่วยความจำพุ่งสูงก่อนอัปโหลดไปยัง GPU.
- ข้อผิดพลาดของ Premultiplied Alpha: โปรแกรมแก้ไขภาพบางตัวจะละทิ้งข้อมูล RGB ในพิกเซลที่โปร่งใสเต็มที่ ซึ่งทำให้เทกเจอร์บลีดและเกิดเส้นขอบสีเข้มรอบสไปรท์.
- ศูนย์การประหยัด VRAM: แตกข้อมูลเป็นหน่วยความจำดิบ 32‑bit เต็มรูปแบบภายใน GPU เว้นแต่จะถูกประมวลผลโดยตัวแปลงเทกซ์เจอร์ของเอนจิน.
4. KTX (Khronos Texture) และ KTX 2.0
พัฒนาโดย Khronos Group—องค์กรกำกับดูแล Vulkan, OpenGL, และ glTF—KTX (.ktx) และ KTX 2.0 แสดงถึงมาตรฐานเปิดสมัยใหม่สำหรับเทกซ์เจอร์ GPU แบบข้ามแพลตฟอร์ม.
ลักษณะทางเทคนิค
- ประเภทคอนเทนเนอร์: คอนเทนเนอร์เทกซ์เจอร์ GPU แบบเปิดที่มาตรฐาน.
- การสนับสนุนการบีบอัด: Basis Universal (ETC1S และ UASTC), ASTC, BCn, ETC2.
- ความสามารถหลัก: การแปลงเทกซ์เจอร์สากล, mipmaps, cubemaps, เทกซ์เจอร์อาเรย์, การรวมกับ glTF.
ทำไมนักพัฒนาถึงใช้ KTX
KTX 2.0 แก้ไขปัญหาการบีบอัดข้ามแพลตฟอร์มที่กระจัดกระจายอย่างแตกต่างกัน โดยทั่วไปนักพัฒนาต้องจัดส่ง DDS (BCn) สำหรับเดสก์ท็อป/คอนโซล และ ASTC/ETC2 สำหรับมือถือ/แท็บเล็ต.
ด้วย KTX 2.0 และ Basis Universal:
- คุณสามารถจัดเก็บเทกซ์เจอร์ในรูปแบบที่กะทัดรัดและบีบอัดได้ทั่วโลก.
- ในขณะทำงาน, ฮาร์ดแวร์ของไคลเอนต์แปลงไฟล์โดยตรงเป็นรูปแบบบล็อกที่ GPU ท้องถิ่นต้องการ (เช่น BC7 บน GeForce RTX, ASTC บน iPhone, ETC2 บนอุปกรณ์ Android รุ่นเก่า).
- Supercompression (Zstandard) สร้างไฟล์ที่มีขนาดเล็กกว่าภาพ JPEG บนดิสก์และแปลงเป็นบล็อก VRAM แบบดั้งเดิมในเวลาเพียงไม่กี่มิลลิวินาที.
ข้อดี
- มาตรฐานข้ามแพลตฟอร์มที่แท้จริง: ทำงานอย่างราบรื่นบน Vulkan, WebGL, WebGPU, และอุปกรณ์มือถือ.
- Basis Universal Transcoding: การสร้างสินทรัพย์เดียวที่รองรับเดสก์ท็อป, มือถือ, และเบราว์เซอร์โดยไม่ต้องส่งออกเทกซ์เจอร์ซ้ำ.
- First-Class glTF Companion: จำเป็นสำหรับประสบการณ์เว็บ 3 มิติสมัยใหม่, เอนจินเมตาเวิร์ส, และไพป์ไลน์การเรนเดอร์แบบเปิด.
ข้อเสีย
- ความพร้อมของเครื่องมือพายป์ไลน์: ต้องการโซ่การสร้างสมัยใหม่ (เช่น
toktxจากชุด KTX-Software); เอนจินที่เป็นกรรมสิทธิ์เก่าอาจไม่มีการรวมแบบพร้อมใช้. - ภาระของ Transcoder: ความหน่วงเวลาการแปลงขณะทำงานเล็กน้อย (แม้จะเร็วกว่าการถอดรหัส PNG แบบเต็มหลายระดับคำสั่ง).
การเปรียบเทียบแบบหัวต่อหัว
| คุณลักษณะ / เกณฑ์ | DDS | TGA | PNG | KTX / KTX 2.0 |
|---|---|---|---|---|
| กรณีการใช้งานหลัก | รันไทม์สำหรับ PC/คอนโซล | การสร้างต้นฉบับและมาสก์ | สไปรท์ 2 มิติและศิลปะต้นฉบับ | รันไทม์ข้ามแพลตฟอร์มและเว็บ |
| การสุ่ม GPU โดยตรง | ใช่ (Native) | ไม่ | ไม่ | ใช่ (Native หรือ Transcoded) |
| การบีบอัด VRAM | ใช่ (BC1–BC7) | ไม่ (Uncompressed) | ไม่ (Uncompressed) | ใช่ (ASTC, BCn, Basis) |
| Mipmaps ที่เตรียมล่วงหน้า | ใช่ | ไม่ | ไม่ | ใช่ |
| ขนาดดิสก์ | ปานกลาง | สูงมาก | เล็ก | เล็กมาก (Basis + Zstandard) |
| ระบบนิเวศ | DirectX / เอนจิ้นเดสก์ท็อป | ซอฟต์แวร์ DCC / พายป์ไลน์ซอร์ส | เอนจินเว็บสากลและ 2D | Vulkan, WebGPU, glTF |
คู่มือปฏิบัติ: การสร้างสายงานสินทรัพย์ที่สมบูรณ์แบบ
คุณควรจัดระเบียบรูปแบบสี่แบบเหล่านี้ในกระบวนการผลิตเชิงพาณิชย์อย่างไร? นี่คือวิธีที่สตูดิโอชั้นนำจัดโครงสร้างพายป์ไลน์เทกซ์เจอร์ของพวกเขา:
[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
- Source Assets: เก็บไฟล์ต้นฉบับและข้อมูลที่บรรจุช่องในรูปแบบ TGA หรือ PNG ภายในที่เก็บโครงการของคุณเพื่อรับประกันข้อมูลสีที่ไม่เสียหาย.
- PC & Console Builds: แปลงเทกซ์เจอร์ต้นฉบับของคุณเป็นไฟล์ DDS โดยใช้ BC7 สำหรับแผนที่อัลบีโด/นอร์มัลระดับละเอียดสูงและ BC4/BC5 สำหรับมาสก์ช่องเดียวและสองช่อง.
- Cross-Platform, Web & Mobile Builds: จัดแพ็คแอสเซ็ต 3D ระหว่างการทำงานเป็น KTX 2.0 เพื่อใช้การแปลงรหัสสากลบน Android, iOS, และ WebGPU โดยไม่ต้องดูแลสาขางานศิลป์แยกต่างหาก.
- User Interfaces: เก็บเทกซ์เจอร์ UI ระหว่างการทำงานไว้ในรูปแบบที่คมชัดและไม่บีบอัด หรืออัตลักษณ์เอนจินแบบ lossless ที่ได้มาจากไฟล์ต้นฉบับ PNG ความละเอียดสูง.
คำถามที่พบบ่อย (FAQ)
Q1. เอนจินเกมสามารถดึงตัวอย่าง PNG โดยตรงจากหน่วยความจำวิดีโอได้หรือไม่?
A1: ไม่; GPU ไม่สามารถแยกวิเคราะห์การบีบอัด PNG ได้ ดังนั้นเอนจินต้องทำการดีคอมเพรสไฟล์ PNG เป็นบิตแมพดิบ 32 บิตในหน่วยความจำก่อนอัปโหลดไปยัง VRAM.
Q2. ทำไมศิลปินเทคนิคจึงชอบใช้ TGA มากกว่า PNG สำหรับการบรรจุมาสก์?
A2: TGA เก็บข้อมูลช่องแบบบริสุทธิ์และไม่บีบอัดโดยไม่มีการรั่วสีหรือการกรองความโปร่งใสของขอบที่ทำลายผ่านช่อง RGB และ Alpha แยกแต่ละช่อง.
Q3. ควรใช้อัลกอริทึมการบีบอัดบล็อกใดในคอนเทนเนอร์ DDS สำหรับแผนที่ปกติ?
A3: ใช้ BC5 (การบีบอัดสองช่องในพื้นที่สัมผัส) สำหรับแผนที่ปกเพื่อรักษาความโค้งของพื้นผิวให้สะอาดโดยไม่มีข้อบกพร่องของบล็อก BC1 มาตรฐาน.
Q4. สิ่งใดทำให้ KTX 2.0 ดีกว่า DDS สำหรับเกมข้ามแพลตฟอร์ม?
A4: KTX 2.0 รองรับ Basis Universal ซึ่งทำให้ไฟล์เดียวสามารถแปลงสัญญาณแบบเรียลไทม์เป็นรูปแบบ BCn สำหรับเดสก์ท็อปหรือรูปแบบ ASTC/ETC สำหรับมือถือได้ทันทีเมื่อเปิดใช้งาน.
Q5. การทำ mipmaps ล่วงหน้าในไฟล์ DDS หรือ KTX ทำให้ขนาดดิสก์เพิ่มขึ้นหรือไม่?
A5: ใช่, การรวมสายมิปแมปเต็มรูปแบบจะเพิ่มข้อมูลดิบประมาณ 33% ให้กับไฟล์, แต่จะขจัดการสั่นไหวขณะรันไทม์, ปรับปรุงความใกล้ชิดของแคช, และเพิ่มประสิทธิภาพการเรนเดอร์ของ GPU.