<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Форматы файлов изображений on File Format Blog</title>
    <link>https://blog.fileformat.com/ru/tag/%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/</link>
    <description>Recent content in Форматы файлов изображений on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru</language>
    <lastBuildDate>Mon, 21 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.fileformat.com/ru/tag/%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Форматы файлов изображений для разработчиков игр DDS, TGA, PNG и KTX</title>
      <link>https://blog.fileformat.com/ru/image/image-file-formats-for-gamevdevelopers-dds-tga-png-and-ktx/</link>
      <pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/ru/image/image-file-formats-for-gamevdevelopers-dds-tga-png-and-ktx/</guid>
      <description>Узнайте различия между DDS, TGA, PNG и KTX. Узнайте, как сжатие GPU, объём видеопамяти и конвейерные рабочие процессы влияют на производительность игры.</description>
      <content:encoded><![CDATA[<p><strong>Последнее обновление</strong>: 21 сент., 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/image-file-formats-for-gamevdevelopers-dds-tga-png-and-ktx.png#center"
         alt="Image File Formats for Game Developers: DDS, TGA, PNG, and KTX Compared"/> 
</figure>

<h2 id="форматы-файлов-изображений-для-разработчиков-игр-dds-tga-png-и-ktx">Форматы файлов изображений для разработчиков игр: DDS, TGA, PNG и KTX</h2>
<p>В разработке игр текстуры составляют наибольшую часть как потребления оперативной памяти во время выполнения, так и размера установочного билда. Независимо от того, создаёте ли вы инди‑стилизованный платформер или стремитесь к фотореализму в AAA‑игре с открытым миром, способ хранения, обработки и загрузки текстурных данных напрямую определяет ваш FPS, время загрузки и совместимость с оборудованием.</p>
<p>Распространённая ошибка новичков — рассматривать игровые текстуры как веб‑графику, полагая, что лёгкий файл на диске обеспечивает лёгкую производительность в игровом движке. В мире GPU реальность выполнения полностью отличается.</p>
<p>В этом подробном разборе мы рассмотрим четыре наиболее критичных формата файлов текстур и изображений в современной разработке игр: <strong>DDS, TGA, PNG и KTX</strong>. Мы изучим, как они работают, где они вписываются в конвейер ассетов и когда использовать каждый из них.</p>
<h2 id="золотое-правило-дисковое-хранилище-vs-видеопамять-vram">Золотое правило: дисковое хранилище vs. видеопамять (VRAM)</h2>
<p>Прежде чем разбирать отдельные форматы, разработчики должны понять фундаментальную разницу между <strong>сжатием дискового хранилища</strong> и <strong>аппаратным блочным сжатием GPU</strong>.</p>
<h3 id="1-сжатие-на-диске-png12-jpeg9-webp10">1. Сжатие на диске (<a href="https://docs.fileformat.com/image/png/">PNG</a>, <a href="https://docs.fileformat.com/image/jpeg/">JPEG</a>, <a href="https://docs.fileformat.com/image/webp/">WebP</a>)</h3>
<p>Форматы, такие как PNG, используют без потерь энтропийное кодирование (DEFLATE). Хотя PNG экономит огромное количество места на SSD или сервере загрузок, современные GPU <strong>не могут напрямую использовать PNG‑файлы</strong>. Когда ваш игровой движок загружает PNG:</p>
<ul>
<li>CPU должен распаковать файл в необработанные, несжатые 32‑битные RGBA‑пиксели в системной памяти.</li>
<li>Несжатый битмап загружается в видеопамять (VRAM).</li>
<li>Текстура размером 2048×2048 занимает примерно <strong>16 МБ видеопамяти</strong>, независимо от того, был ли PNG размером 1 МБ или 3 МБ на диске.</li>
</ul>
<h3 id="2-блочное-сжатие-gpu-bcn-astc-etc2">2. Блочное сжатие GPU (BCn, ASTC, ETC2)</h3>
<p>Специализированные форматы GPU сжимают фиксированные блоки пикселей (обычно блоки 4×4 пикселя) в более компактные битовые представления. Графическое оборудование считывает эти блоки непосредственно из видеопамяти без распаковки на стороне CPU:</p>
<ul>
<li>Прямой случайный доступ к видеопамяти без накладных расходов на распаковку во время выполнения.</li>
<li>Та же текстура 2048×2048 с использованием BC7/ASTC занимает всего <strong>примерно 4 МБ видеопамяти</strong> (сокращение на 75%).</li>
<li>Мипмапы могут быть запечены непосредственно в файл контейнера.</li>
</ul>
<p>Контейнеры, такие как <strong>DDS</strong> и <strong>KTX</strong>, созданы специально для упаковки этих нативных форматов GPU, тогда как <strong>PNG</strong> и <strong>TGA</strong> выполняют отдельные функции на более ранних этапах конвейера.</p>
<h2 id="1-dds14-directdraw-surface">1. <a href="https://docs.fileformat.com/image/dds/">DDS</a> (DirectDraw Surface)</h2>
<p>Введённый Microsoft вместе с DirectX 7, формат <strong>DirectDraw Surface (.dds)</strong> является бесспорным отраслевым рабочим конём для разработки игр на ПК, Xbox и консолях.</p>
<h3 id="технические-характеристики">Технические характеристики</h3>
<ul>
<li><strong>Тип контейнера:</strong> Нативный контейнер текстур GPU.</li>
<li><strong>Поддерживаемое сжатие:</strong> BC1‑BC7 (Block Compression / семейство DXT), несжатый RGBA, форматы с плавающей точкой (BC6H для HDR).</li>
<li><strong>Ключевые возможности:</strong> Предварительно запечённые мипмапы, кубические карты, массивы текстур, объёмные (3D) текстуры.</li>
</ul>
<h3 id="почему-разработчики-используют-dds">Почему разработчики используют DDS</h3>
<p>DDS по сути представляет собой прямой дамп памяти того, что требуется графическому оборудованию. При загрузке DDS‑текстуры с заранее сгенерированными мипмапами движок полностью пропускает декомпрессию на CPU и выполняет прямое копирование памяти Direct3D или Vulkan на GPU. Это устраняет узкие места процессора при потоковой передаче и загрузке уровней.</p>
<h3 id="плюсы">Плюсы</h3>
<ul>
<li><strong>Молниеносные времена загрузки:</strong> Не требуется ни одного цикла декомпрессии CPU во время выполнения.</li>
<li><strong>Предзапечённые мипмапы:</strong> Офлайн‑генерация мипмапов позволяет художникам контролировать фильтрацию, резкость и нормализацию нормальных карт на разных уровнях детализации (LOD).</li>
<li><strong>Эффективность VRAM:</strong> Нативно использует отраслевые алгоритмы сжатия BC.</li>
</ul>
<h3 id="недостатки">Недостатки</h3>
<ul>
<li><strong>DirectX/Windows Bias:</strong> Исторически привязан к экосистемам Microsoft, хотя широко поддерживается в современных настольных движках.</li>
<li><strong>Lossy Compression Artifacts:</strong> Блочная компрессия (особенно BC1 на нормальных картах) может вызывать блокирующие артефакты, если не использовать BC5/BC7.</li>
<li><strong>Limited Mobile Support:</strong> Мобильные GPU обычно предпочитают ASTC или ETC2 вместо настольных форматов BC.</li>
</ul>
<h2 id="2-tga16-truevision-targa">2. <a href="https://docs.fileformat.com/image/tga/">TGA</a> (Truevision Targa)</h2>
<p>Созданный в 1984 году, <strong>TGA (.tga)</strong> — это несжатый или кодированный методом RLE (Run-Length Encoding) растровый графический формат, который остаётся надёжным элементом конвейера более трёх десятилетий.</p>
<h3 id="технические-характеристики-1">Технические характеристики</h3>
<ul>
<li><strong>Container Type:</strong> Несжатый битмап для создания/обмена.</li>
<li><strong>Bit Depths:</strong> 8, 16, 24 и 32 бита на пиксель (RGB + отдельный 8‑битный альфа‑канал).</li>
<li><strong>Compression:</strong> Отсутствует или базовый RLE (Run-Length Encoding).</li>
</ul>
<h3 id="почему-разработчики-используют-tga">Почему разработчики используют TGA</h3>
<p>TGA предпочитают технические художники и программисты движков за её чистую архитектурную простоту. В отличие от PNG, который внедряет альфа‑канал в сложные фильтрующие матрицы, TGA сохраняет цветовые данные и альфа‑каналы полностью отдельными и нетронутыми.</p>
<p>При создании пользовательских масок (например, упаковывая Roughness в красный канал, Metallic в зелёный, Ambient Occlusion в синий и Height в альфа‑канал), TGA гарантирует отсутствие тонкого алгоритмического смешения или протекания цвета между каналами.</p>
<h3 id="плюсы-1">Плюсы</h3>
<ul>
<li><strong>Безупречная точность данных:</strong> Бит‑точное сохранение значений каналов; идеально подходит для текстур с упакованными каналами ORM (Occlusion‑Roughness‑Metallic).</li>
<li><strong>Тривиальный разбор:</strong> Внутренние инструменты конвейера, пользовательские экспортеры и автоматические скрипты могут читать и записывать файлы TGA с минимальным количеством строк кода.</li>
<li><strong>Универсальная поддержка DCC:</strong> Maya, 3ds Max, Blender, Substance 3D и Photoshop предоставляют нативный, безпроблемный экспорт TGA.</li>
</ul>
<h3 id="недостатки-1">Недостатки</h3>
<ul>
<li><strong>Огромные размеры файлов:</strong> Большой объём в репозиториях Git/Perforce и медленные скорости загрузки в распределённых командах.</li>
<li><strong>Неподходящий для выполнения:</strong> Не может быть использован напрямую GPU как сжатый формат; должен быть преобразован движком во время подготовки.</li>
</ul>
<h2 id="3-png12-portable-network-graphics">3. <a href="https://docs.fileformat.com/image/png/">PNG</a> (Portable Network Graphics)</h2>
<p><strong>PNG (.png)</strong> — самый известный в мире без потерь формат изображений, использующий сжатие zlib/DEFLATE для упаковки насыщенных 24‑битных и 32‑битных изображений в удивительно небольшие файлы.</p>
<h3 id="технические-характеристики-2">Технические характеристики</h3>
<ul>
<li><strong>Тип контейнера:</strong> Формат без потерь для создания и доставки.</li>
<li><strong>Глубина цвета:</strong> До 16 бит на канал (48‑битный RGB, 64‑битный RGBA).</li>
<li><strong>Сжатие:</strong> Алгоритм без потерь DEFLATE.</li>
</ul>
<h3 id="почему-разработчики-используют-png">Почему разработчики используют PNG</h3>
<p>PNG служит основным форматом распространения UI‑активов, спрайтов, рекламных материалов и промежуточных исходных текстур. Для 2D‑игр, созданных в Unity, Godot или Unreal Engine, PNG обеспечивает чёткую пиксельную точность с безупречными масками прозрачности.</p>
<h3 id="плюсы-2">Плюсы</h3>
<ul>
<li><strong>Компактный объём репозитория:</strong> Значительно уменьшает размеры выгрузки проекта по сравнению с несжатым TGA.</li>
<li><strong>Качество цвета без потерь:</strong> Отсутствие артефактов сжатия на контрастных краях и векторных иллюстрациях.</li>
<li><strong>Нативная альфа‑прозрачность:</strong> Чистая поддержка 8‑битного альфа‑канала для сложных полупрозрачных UI‑элементов и листов частиц.</li>
</ul>
<h3 id="минусы">Минусы</h3>
<ul>
<li><strong>Тяжёлая декодировка CPU:</strong> Распаковка больших PNG‑файлов во время выполнения замедляет частоту кадров и резко увеличивает использование памяти перед загрузкой на GPU.</li>
<li><strong>Подводные камни премультиплицированной альфы:</strong> Некоторые графические редакторы отбрасывают данные RGB в полностью прозрачных пикселях, что портит растекание текстур и вызывает тёмные контуры вокруг спрайтов.</li>
<li><strong>Zero VRAM Savings:</strong> Декомпрессирует в полную 32‑битную необработанную память внутри GPU, если только не обрабатывается кулинаром текстур движка.</li>
</ul>
<h2 id="4-ktx-khronos-texture-и-ktx-20">4. KTX (Khronos Texture) и KTX 2.0</h2>
<p>Разработано Khronos Group — управляющим органом за Vulkan, OpenGL и glTF — <strong>KTX (.ktx)</strong> и <strong>KTX 2.0</strong> представляют современный открытый стандарт кроссплатформенных GPU‑текстур.</p>
<h3 id="технические-характеристики-3">Технические характеристики</h3>
<ul>
<li><strong>Container Type:</strong> Стандартизированный открытый контейнер GPU‑текстур.</li>
<li><strong>Compression Support:</strong> Basis Universal (ETC1S и UASTC), ASTC, BCn, ETC2.</li>
<li><strong>Key Capabilities:</strong> Универсальное транскодирование текстур, мипмапы, кубические карты, массивные текстуры, интеграция с glTF.</li>
</ul>
<h3 id="почему-разработчики-используют-ktx">Почему разработчики используют KTX</h3>
<p>KTX 2.0 решает проблему фрагментированного кроссплатформенного сжатия. Традиционно разработчикам приходилось поставлять DDS (BCn) для настольных ПК/консолей и ASTC/ETC2 для мобильных устройств/планшетов.</p>
<p>С KTX 2.0 и <strong>Basis Universal</strong>:</p>
<ol>
<li>Вы храните текстуры в компактном, универсально сжимаемом формате.</li>
<li>Во время выполнения клиентское оборудование транскодирует файл напрямую в любой блоковый формат, предпочитаемый локальным GPU (например, BC7 на GeForce RTX, ASTC на iPhone, ETC2 на более старом устройстве Android).</li>
<li>Суперкомпрессия (Zstandard) создает файлы, меньшие по размеру, чем JPEG на диске, которые транскодируются в нативные блоки VRAM за миллисекунды.</li>
</ol>
<h3 id="плюсы-3">Плюсы</h3>
<ul>
<li><strong>Истинный кросс-платформенный стандарт:</strong> Работает безупречно на Vulkan, WebGL, WebGPU и мобильных устройствах.</li>
<li><strong>Транскодирование Basis Universal:</strong> Один единственный сборка ассета охватывает настольные, мобильные и браузерные платформы без дублирования экспорта текстур.</li>
<li><strong>Первоклассный companion для glTF:</strong> Необходим для современных 3D веб‑опытов, движков метавселенной и открытых рендеринговых конвейеров.</li>
</ul>
<h3 id="минусы-1">Минусы</h3>
<ul>
<li><strong>Зрелость инструментов конвейера:</strong> Требует современных цепочек сборки (например, <code>toktx</code> из набора KTX-Software); более старые проприетарные движки могут не иметь готовой интеграции из коробки.</li>
<li><strong>Накладные расходы транскодера:</strong> Небольшая задержка транскодирования во время выполнения (хотя она в несколько порядков быстрее, чем полное программное декодирование PNG).</li>
</ul>
<h2 id="сравнение-лицом-к-лицу">Сравнение лицом к лицу</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Функция / Критерий</th>
<th style="text-align:left"><a href="https://docs.fileformat.com/image/dds/">DDS</a></th>
<th style="text-align:left"><a href="https://docs.fileformat.com/image/tga/">TGA</a></th>
<th style="text-align:left"><a href="https://docs.fileformat.com/image/png/">PNG</a></th>
<th style="text-align:left">KTX / KTX 2.0</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>Основное применение</strong></td>
<td style="text-align:left">Среда выполнения для ПК/консолей</td>
<td style="text-align:left">Создание исходных материалов и маски</td>
<td style="text-align:left">2D-спрайты и исходные изображения</td>
<td style="text-align:left">Кроссплатформенная и веб-среда выполнения</td>
</tr>
<tr>
<td style="text-align:left"><strong>Прямая выборка GPU</strong></td>
<td style="text-align:left">Да (Нативный)</td>
<td style="text-align:left">Нет</td>
<td style="text-align:left">Нет</td>
<td style="text-align:left">Да (Нативный или транскодированный)</td>
</tr>
<tr>
<td style="text-align:left"><strong>Сжатие VRAM</strong></td>
<td style="text-align:left">Да (BC1–BC7)</td>
<td style="text-align:left">Нет (Несжатый)</td>
<td style="text-align:left">Нет (Несжатый)</td>
<td style="text-align:left">Да (ASTC, BCn, Basis)</td>
</tr>
<tr>
<td style="text-align:left"><strong>Предварительно созданные мипмапы</strong></td>
<td style="text-align:left">Да</td>
<td style="text-align:left">Нет</td>
<td style="text-align:left">Нет</td>
<td style="text-align:left">Да</td>
</tr>
<tr>
<td style="text-align:left"><strong>Размер диска</strong></td>
<td style="text-align:left">Умеренный</td>
<td style="text-align:left">Очень высокий</td>
<td style="text-align:left">Маленький</td>
<td style="text-align:left">Крайне маленький (Basis + Zstandard)</td>
</tr>
<tr>
<td style="text-align:left"><strong>Экосистема</strong></td>
<td style="text-align:left">DirectX / Десктопные движки</td>
<td style="text-align:left">Программное обеспечение DCC / Конвейеры исходного кода</td>
<td style="text-align:left">Универсальные веб‑ и 2D‑движки</td>
<td style="text-align:left">Vulkan, WebGPU, glTF</td>
</tr>
</tbody>
</table>
<h2 id="практическое-руководство-создание-идеального-конвейера-ассетов">Практическое руководство: создание идеального конвейера ассетов</h2>
<p>Как следует организовать эти четыре формата в коммерческом производственном конвейере? Вот как ведущие студии структурируют свои текстурные конвейеры:</p>
<pre tabindex="0"><code>[DCC &amp; 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 &amp; 2D Sprites)       ──────►  Generates Mipmaps &amp; Block    ──────►  KTX2 (Vulkan / WebGPU / Mobile)
   • PSD / EXR (HDR &amp; masters)   ──────►  Compression Automatically   
</code></pre><ol>
<li><strong>Исходные ресурсы:</strong> Храните мастер‑файлы и данные, упакованные по каналам, в <strong>TGA</strong> или <strong>PNG</strong> в репозиториях проекта, чтобы гарантировать отсутствие искажений цветовой информации.</li>
<li><strong>Сборки для ПК и консолей:</strong> Преобразуйте исходные текстуры в файлы <strong>DDS</strong>, используя BC7 для высокодетализированных карт альбедо/нормалей и BC4/BC5 для одно- и двухканальных масок.</li>
<li><strong>Кроссплатформенные, веб‑ и мобильные сборки:</strong> Упакуйте 3D‑активы во время выполнения в <strong>KTX 2.0</strong>, чтобы воспользоваться универсальным транскодированием на Android, iOS и WebGPU без необходимости поддерживать отдельные ветки арта.</li>
<li><strong>Пользовательские интерфейсы:</strong> Храните текстуры UI во время выполнения либо в чётких несжатых форматах, либо в без потерь атласах движка, полученных из высокоразрешённых исходных файлов <strong>PNG</strong>.</li>
</ol>
<h2 id="часто-задаваемые-вопросы-faq">Часто задаваемые вопросы (FAQ)</h2>
<h3 id="вопрос-1-может-ли-игровой-движок-считывать-png-напрямую-из-видеопамяти">Вопрос 1. Может ли игровой движок считывать PNG напрямую из видеопамяти?</h3>
<p><strong>A1:</strong> Нет; GPU не могут разбирать сжатие PNG, поэтому движки должны распаковывать PNG‑файлы в необработанные 32‑битные битмапы в памяти перед загрузкой их в видеопамять.</p>
<h3 id="вопрос-2-почему-технические-художники-предпочитают-tga-вместо-png-для-упаковки-масок">Вопрос 2. Почему технические художники предпочитают TGA вместо PNG для упаковки масок?</h3>
<p><strong>A2:</strong> TGA хранит чистые, несжатые данные каналов без растекания цвета или разрушительной фильтрации прозрачности краёв по отдельным каналам RGB и альфа.</p>
<h3 id="вопрос-3-какой-алгоритм-блочного-сжатия-следует-использовать-в-контейнере-dds-для-нормальных-карт">Вопрос 3. Какой алгоритм блочного сжатия следует использовать в контейнере DDS для нормальных карт?</h3>
<p><strong>A3:</strong> Используйте <strong>BC5</strong> (сжатие в тангенциальном пространстве с двумя каналами) для нормальных карт, чтобы сохранить чистую кривизну поверхности без типичных артефактов блоков BC1.</p>
<h3 id="вопрос-4-что-делает-ktx-20-лучше-чем-dds-для-кроссплатформенных-игр">Вопрос 4. Что делает KTX 2.0 лучше, чем DDS, для кроссплатформенных игр?</h3>
<p><strong>A4:</strong> KTX 2.0 поддерживает Basis Universal, что позволяет одному файлу в режиме реального времени транскодировать в форматы BCn для настольных систем или в форматы ASTC/ETC для мобильных устройств при запуске.</p>
<h3 id="вопрос-5-увеличивает-ли-предварительное-запекание-мипмапов-в-файлах-dds-или-ktx-размер-диска">Вопрос 5. Увеличивает ли предварительное запекание мипмапов в файлах DDS или KTX размер диска?</h3>
<p><strong>A5:</strong> Да, включение полных цепочек мипмапов добавляет примерно на 33 % больше необработанных данных в файл, но устраняет мерцание во время выполнения, улучшает локальность кэша и повышает производительность рендеринга на GPU.</p>
<h2 id="см-также">См. также</h2>
<ul>
<li><a href="https://blog.fileformat.com/en/image/webp-vs-avif-vs-jpeg-xl-which-image-format-should-developers-choose-in-2026/">WebP vs AVIF vs JPEG XL: Лучший формат изображения для разработчиков в 2026 году</a></li>
<li><a href="https://blog.fileformat.com/image/difference-between-bmp-and-png/">Разница между BMP и PNG</a></li>
<li><a href="https://blog.fileformat.com/2021/08/19/apng-vs-bmp-which-image-file-format-is-better/">APNG vs BMP: Какой формат изображения лучше?</a></li>
<li><a href="https://blog.fileformat.com/2021/08/25/raster-vs-vector-images-a-brief-comparison/">Растровые и векторные изображения: Краткое сравнение</a></li>
</ul>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
