آخرین بهروزرسانی: ۲۱ سپتامبر ۲۰۲۶

قالبهای فایل تصویری برای توسعهدهندگان بازی: DDS، TGA، PNG و KTX
در توسعه بازی، بافتها بزرگترین بخش مصرف حافظه زمان اجرا و حجم ساخت نصب را تشکیل میدهند. چه در حال ساخت یک پلتفرمر استایلشده ایندی باشید و چه در حال پیشبرد فتوواقعگرایی در یک RPG جهان باز AAA، نحوه ذخیرهسازی، پردازش و دریافت دادههای بافت بهطور مستقیم نرخ فریم، زمانهای بارگذاری و سازگاری سختافزاری شما را تعیین میکند.
یک اشتباه رایج مبتدیان این است که بافتهای بازی را مانند گرافیکهای وب در نظر بگیرند—فرض اینکه یک فایل سبک روی دیسک به عملکرد سبک در موتور بازی شما تبدیل میشود. در دنیای GPU، واقعیت زمان اجرا کاملاً متفاوت است.
در این بررسی عمیق، چهار فرمت فایل بافت و تصویر مهم در توسعه بازی مدرن را تجزیه میکنیم: DDS، TGA، PNG و KTX. ما نحوه کار آنها، جایگاهشان در خط لوله داراییها و زمان استفاده از هر کدام را بررسی خواهیم کرد.
قانون طلایی: ذخیرهسازی دیسک در مقابل حافظه ویدئویی (VRAM)
قبل از تجزیه و تحلیل فرمتهای فردی، توسعهدهندگان باید تفاوت اساسی بین فشردهسازی ذخیرهسازی دیسک و فشردهسازی بلوک سختافزاری GPU را درک کنند.
1. فشردهسازی دیسک (PNG, JPEG, WebP)
فرمتهایی مانند PNG از رمزگذاری انتروپی بدون افت (DEFLATE) استفاده میکنند. در حالی که PNG فضای عظیمی را بر روی SSD یا سرور دانلود ذخیره میکند، GPUهای مدرن نمیتوانند فایلهای PNG را بهصورت مستقیم نمونهبرداری کنند. وقتی موتور بازی شما یک PNG را بارگذاری میکند:
- CPU باید فایل را به پیکسلهای خام، بدون فشردهسازی ۳۲ بیتی RGBA در حافظه سیستم باز کند.
- نقشه بیت بدون فشردهسازی به VRAM بارگذاری میشود.
- یک تکسچر ۲۰۴۸×۲۰۴۸ تقریباً ۱۶ مگابایت VRAM مصرف میکند، بدون در نظر گرفتن اینکه PNG روی دیسک ۱ مگابایت یا ۳ مگابایت بوده باشد.
2. فشردهسازی بلوک GPU (BCn, ASTC, ETC2)
فرمتهای اختصاصی GPU بلوکهای ثابت پیکسلها (معمولاً بلوکهای ۴×۴ پیکسل) را به نمایشهای بیتی کوچکتر فشرده میکنند. سختافزار گرافیکی این بلوکها را بهصورت مستقیم در VRAM نمونهبرداری میکند بدون نیاز به decompress در سمت CPU:
- دسترسی تصادفی مستقیم به VRAM بدون هیچ هزینهای برای decompress در زمان اجرا.
- همان تکسچر ۲۰۴۸×۲۰۴۸ با استفاده از BC7/ASTC فقط حدود ۴ مگابایت VRAM مصرف میکند (کاهش ۷۵٪).
- Mipmaps میتوانند بهصورت مستقیم در فایل کانتینر تعبیه شوند.
کانتینرهایی مانند DDS و KTX بهطور خاص برای بستهبندی این فرمتهای بومی GPU ساخته شدهاند، در حالی که PNG و TGA نقشهای متفاوتی در مراحل اولیه خط لوله دارند.
1. DDS (سطح DirectDraw)
معرفی شده توسط مایکروسافت همراه با DirectX 7، فرمت DirectDraw Surface (.dds) بهعنوان نیروی کار بیرقیب صنعت برای توسعه بازیهای PC، Xbox و کنسول شناخته میشود.
ویژگیهای فنی
- نوع کانتینر: محفظه بومی بافت GPU.
- فشردهسازی پشتیبانیشده: BC1 تا BC7 (فشردهسازی بلوکی / خانواده DXT)، RGBA بدون فشردهسازی، فرمتهای شناور (BC6H برای HDR).
- قابلیتهای کلیدی: میپمپهای پیشپخته، نقشههای مکعبی، آرایههای بافت، بافتهای حجمی (3D).
چرا توسعهدهندگان از DDS استفاده میکنند
DDS در واقع یک خروجی مستقیم از حافظه آنچه سختافزار گرافیکی نیاز دارد، است. هنگام بارگذاری یک بافت DDS با میپمپهای پیشتولید شده، موتور بهطور کامل فشردهسازی CPU را نادیده میگیرد و یک کپی مستقیم حافظه Direct3D یا Vulkan به GPU انجام میدهد. این کار گلوگاههای CPU را در حین استریمینگ و بارگذاری سطح حذف میکند.
مزایا
- زمان بارگذاری فوقالعاده سریع: هیچ چرخه فشردهسازی CPU در زمان اجرا لازم نیست.
- میپمپهای پیشپخته: تولید آفلاین میپمپ به هنرمند امکان فیلترگذاری، تیزکردن و نرمالسازی نقشههای نرمال را در سطوح جزئیات مختلف (LOD) میدهد.
- کارایی VRAM: بهصورت بومی از الگوریتمهای فشردهسازی BC استاندارد صنعت استفاده میکند.
معایب
- تمایل DirectX/Windows: بهصورت تاریخی به اکوسیستمهای مایکروسافت مرتبط بوده است، اگرچه در موتورهای دسکتاپ مدرن بهطور گستردهای پشتیبانی میشود.
- آثار فشردهسازی با اتلاف: فشردهسازی بلوکی (بهویژه BC1 در نقشههای نرمال) میتواند باعث بلوکمانندی شود مگر اینکه از BC5/BC7 استفاده شود.
- پشتیبانی محدود موبایل: پردازندههای گرافیکی موبایل معمولاً ASTC یا ETC2 را نسبت به فرمتهای BC دسکتاپ ترجیح میدهند.
2. TGA (Truevision Targa)
ساخته شده در سال ۱۹۸۴، TGA (.tga) یک فرمت فایل گرافیک رستر بدون فشردهسازی یا با کدگذاری طول اجرا (RLE) است که بهعنوان یک عنصر اساسی خط لوله بیش از سه دهه باقی مانده است.
ویژگیهای فنی
- نوع کانتینر: بیتمپ نویسندگی/تبادل بدون فشردهسازی.
- عمق بیت: ۸، ۱۶، ۲۴ و ۳۲ بیت در هر پیکسل (RGB + کانال آلفای ۸ بیتی اختصاصی).
- فشردهسازی: هیچ یا RLE پایه (کدگذاری طول اجرا).
چرا توسعهدهندگان از TGA استفاده میکنند
TGA توسط هنرمندان فنی و برنامهنویسان موتور بهدلیل سادگی خالص معماریاش ترجیح داده میشود. برخلاف PNG که یک کانال آلفا را در ماتریسهای فیلتر پیچیده جاسازی میکند، TGA دادههای رنگی و کانالهای آلفا را کاملاً جدا و دستنخورده نگه میدارد.
هنگام ایجاد ماسکهای سفارشی (مثلاً بستهبندی Roughness به رنگ قرمز، Metallic به رنگ سبز، Ambient Occlusion به رنگ آبی، و Height به آلفا)، TGA اطمینان میدهد که هیچ ترکیب الگوریتمی ظریف یا ریزش رنگی بین کانالها رخ ندهد.
مزایا
- دقت دادههای بینقص: حفظ دقیق بیت به بیت مقادیر کانال؛ ایدهآل برای بافتهای ORM (Occlusion-Roughness-Metallic) که بهصورت کانالپک شدهاند.
- تجزیهوتحلیل ساده: ابزارهای داخلی خط لوله، صادرکنندههای سفارشی و اسکریپتهای خودکار میتوانند فایلهای TGA را با حداقل خطوط کد بخوانند و بنویسند.
- پشتیبانی جهانی DCC: Maya، 3ds Max، Blender، Substance 3D و Photoshop امکان خروجی TGA بومی و بدون دردسر را فراهم میکنند.
معایب
- حجم فایلهای عظیم: ردپای بزرگ در مخازن Git/Perforce و سرعت دانلود کند برای تیمهای توزیعشده.
- نامناسب برای زمان اجرا: نمیتواند بهصورت مستقیم توسط GPU بهعنوان فرمت فشرده مصرف شود؛ باید در زمان پخت توسط موتور تبدیل شود.
3. PNG (گرافیک قابل حمل شبکه)
PNG (.png) پرکاربردترین فرمت تصویر بدون افت کیفیت در جهان است که با استفاده از فشردهسازی zlib/DEFLATE، تصاویر غنی ۲۴‑بیتی و ۳۲‑بیتی را بهصورت فایلهای بسیار کوچک بستهبندی میکند.
ویژگیهای فنی
- نوع کانتینر: فرمت نویسندگی و تحویل بدون افت کیفیت.
- عمق بیت: حداکثر ۱۶ بیت در هر کانال (RGB ۴۸‑بیتی، RGBA ۶۴‑بیتی).
- فشردهسازی: الگوریتم DEFLATE بدون اتلاف.
چرا توسعهدهندگان از PNG استفاده میکنند
PNG بهعنوان فرمت اصلی توزیع برای داراییهای UI، اسپریتها، مطالب تبلیغاتی و بافتهای منبع میانی عمل میکند. برای بازیهای دو‑بعدی ساختهشده در Unity، Godot یا Unreal Engine، PNG وضوح پیکسل واضحی با ماسکهای شفافیت بینقص ارائه میدهد.
مزایا
- حجم کم مخزن: نسبت به TGA بدون فشردهسازی، اندازههای دریافت پروژه را بهطور قابلتوجهی کاهش میدهد.
- کیفیت رنگ بدون اتلاف: هیچ اثر فشردهسازی بر لبههای با کنتراست بالا و تصویرهای سبکبرداریوار وجود ندارد.
- شفافیت آلفای بومی: پشتیبانی تمیز از کانال آلفای ۸‑بیتی برای عناصر UI شفاف پیچیده و شیتهای ذرهای.
معایب
- رمزگشایی سنگین CPU: استخراج PNGهای بزرگ در زمان اجرا باعث کاهش نرخ فریم و افزایش ناگهانی مصرف حافظه قبل از بارگذاری به GPU میشود.
- مشکلات آلفای پیشضربشده: برخی ویرایشگرهای تصویر دادههای RGB را در پیکسلهای کاملاً شفاف حذف میکنند، که باعث خراب شدن پخش بافت و ایجاد خطوط تاریک اطراف اسپریتها میشود.
- صرفهجویی صفر VRAM: در داخل GPU به حافظهٔ خام ۳۲ بیتی کامل باز فشرده میشود مگر اینکه توسط پختکنندهٔ بافت موتور جذب شود.
۴. KTX (Khronos Texture) و KTX 2.0
توسعه یافته توسط گروه Khronos—مرجع حاکم بر Vulkan، OpenGL و glTF—KTX (.ktx) و KTX 2.0 استاندارد باز مدرن برای بافتهای GPU چندپلتفرمی را نمایندگی میکنند.
ویژگیهای فنی
- نوع کانتینر: کانتینر باز استاندارد شدهٔ بافت GPU.
- پشتیبانی از فشردهسازی: Basis Universal (ETC1S و UASTC)، ASTC، BCn، ETC2.
- قابلیتهای کلیدی: تبدیل جهانی بافت، میپمپها، مکعبنقشهها، بافتهای آرایهای، ادغام با glTF.
چرا توسعهدهندگان از KTX استفاده میکنند
KTX 2.0 مشکل فشردهسازی پراکندهٔ چندپلتفرمی را حل میکند. بهصورت سنتی، توسعهدهندگان مجبور بودند DDS (BCn) را برای دسکتاپ/کنسولها و ASTC/ETC2 را برای موبایل/تبلتها ارسال کنند.
با KTX 2.0 و Basis Universal:
- شما بافتها را در قالبی فشرده و بهصورت جهانی قابل فشردهسازی ذخیره میکنید.
- در زمان اجرا، سختافزار کلاینت فایل را مستقیماً به هر فرمتی که GPU محلی ترجیح میدهد تبدیل میکند (مثلاً BC7 بر روی GeForce RTX، ASTC بر روی iPhone، ETC2 بر روی دستگاه اندروید قدیمی).
- سوپرکمپرشن (Zstandard) فایلهایی کوچکتر از JPEG روی دیسک تولید میکند که در میلیثانیهها به بلوکهای بومی VRAM تبدیل میشوند.
مزایا
- استاندارد واقعی چندپلتفرمی: بهصورت یکپارچه بر روی Vulkan، WebGL، WebGPU و دستگاههای موبایل اجرا میشود.
- تبدیل یونیورسال Basis: یک ساخت دارایی واحد هدفگذاری برای دسکتاپ، موبایل و مرورگر بدون نیاز به صادرات تکتک بافتها انجام میدهد.
- همراه glTF درجه یک: برای تجربههای وب سهبعدی مدرن، موتورهای متاورس و خطوط لوله رندرینگ باز ضروری است.
معایب
- بالغ بودن ابزارهای خط لوله: به زنجیرههای ساخت مدرن (مانند
toktxاز مجموعه KTX-Software) نیاز دارد؛ موتورهای مالکیتی قدیمی ممکن است یکپارچهسازی آماده را نداشته باشند. - بار اضافه تبدیلکننده: تاخیر جزئی در تبدیل در زمان اجرا (اگرچه به مراتب سریعتر از رمزگشایی کامل نرمافزاری PNG است).
مقایسه سر به سر
| ویژگی / معیار | DDS | TGA | PNG | KTX / KTX 2.0 |
|---|---|---|---|---|
| موارد استفاده اصلی | محیط اجرای PC/کنسول | نویسندگی منبع و ماسکها | اسپریتهای 2D و هنر منبع | محیط اجرای چندپلتفرمی و وب |
| نمونهگیری مستقیم GPU | بله (بومی) | خیر | خیر | بله (بومی یا تبدیلشده) |
| فشردهسازی VRAM | بله (BC1–BC7) | خیر (بدون فشردهسازی) | خیر (بدون فشردهسازی) | بله (ASTC, BCn, Basis) |
| مِپمپهای پیشپخته | بله | خیر | خیر | بله |
| اندازه دیسک | متوسط | بسیار بالا | کوچک | بسیار کوچک (Basis + Zstandard) |
| اکوسیستم | DirectX / موتورهای دسکتاپ | نرمافزار DCC / خطوط لوله منبع | موتورهای وب و ۲D عمومی | 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
- منابع اصلی: فایلهای اصلی و دادههای بستهشده به کانال را در TGA یا PNG در مخازن پروژه خود ذخیره کنید تا اطلاعات رنگی بدون خراب شدن تضمین شود.
- ساختهای PC و کنسول: بافتهای منبع خود را به فایلهای DDS تبدیل کنید و از BC7 برای نقشههای الbedo/نرمال با جزئیات بالا و از BC4/BC5 برای ماسکهای تککاناله و دو‑کاناله استفاده کنید.
- ساختهای چندپلتفرمی، وب و موبایل: داراییهای ۳D زمان اجرا را به KTX 2.0 بستهبندی کنید تا از تبدیل یونیورسال در Android، iOS و WebGPU بهرهمند شوید بدون اینکه نیاز به شاخههای جداگانه هنری داشته باشید.
- رابطهای کاربری: بافتهای UI زمان اجرا را یا در فرمتهای واضح بدون فشردهسازی یا در آتلهای موتور بدونضایعه که از فایلهای منبع PNG با وضوح بالا استخراج شدهاند، نگه دارید.
سوالات متداول (FAQ)
س.۱. آیا یک موتور بازی میتواند یک PNG را مستقیماً از حافظه ویدئویی نمونهبرداری کند؟
A1: خیر؛ کارتهای گرافیک نمیتوانند فشردهسازی PNG را تجزیه کنند، بنابراین موتورها باید فایلهای PNG را به بیتمپهای خام ۳۲‑بیتی در حافظه بازکرده و سپس به VRAM بارگذاری کنند.
س.۲. چرا هنرمندان فنی ترجیح میدهند برای بستهبندی ماسک از TGA به جای PNG استفاده کنند؟
A2: فرمت TGA دادههای خالص و بدون فشردهسازی کانالها را ذخیره میکند بدون نشت رنگ یا فیلترگذاری مخرب شفافیت لبهها در کانالهای جداگانه RGB و آلفا.
س.۳. برای نقشههای نرمال، داخل یک کانتینر DDS از کدام الگوریتم فشردهسازی بلوکی باید استفاده کنم؟
A3: برای نقشههای نرمال از BC5 (فشردهسازی دو کاناله فضای تانژانت) استفاده کنید تا انحنای سطح تمیز حفظ شود بدون آرتهفکتهای بلوک استاندارد BC1.
س.۴. چه چیزی KTX 2.0 را نسبت به DDS برای بازیهای چندپلتفرمی بهتر میکند؟
A4: KTX 2.0 از Basis Universal پشتیبانی میکند، که اجازه میدهد یک فایل واحد بهصورت لحظهای به فرمتهای BCn دسکتاپ یا فرمتهای موبایل ASTC/ETC در زمان اجرا تبدیل شود.
س.۵. آیا پیشپخت مپهای میپ در فایلهای DDS یا KTX باعث افزایش حجم دیسک میشود؟
A5: بله، افزودن زنجیرههای کامل مپمپ تقریباً ۳۳٪ داده خام بیشتری به فایل اضافه میکند، اما لرزش زمان اجرا را از بین میبرد، محلیسازی کش را بهبود میبخشد و عملکرد رندرینگ GPU را افزایش میدهد.