Texture file formats
PNG, TGA, JPEG, TIFF, PSD, EXR, HDR, WebP, DDS and KTX2 compared for game work; bit depth, alpha, compression, which engines import what, and the difference between source formats and GPU-ready formats.
A texture file format is how an image is stored on disk. Game work uses two kinds: source formats you paint, bake and export to (PNG, TGA, TIFF, PSD, EXR), and GPU-ready formats that already hold compressed data the graphics card can read directly (DDS, KTX2). Engines such as Godot and Unreal take source formats and compress them on import (Godot documentation: Importing images; Unreal Engine documentation: Texture Compression Settings); see texture formats, compression and mipmaps.
The questions that matter for each format are bit depth, alpha, compression, and whether your engine reads it.
#Comparison
| Format | Bit depth per channel | Typical use | Engine notes |
|---|---|---|---|
PNG (.png) |
8 or 16 (Substance 3D Painter documentation) | Most exported maps | Godot limits PNG precision "to 8 bits per channel upon importing" (Godot documentation); Unity reads it (Unity Manual) |
TGA (.tga) |
8 only (Substance 3D Painter documentation) | Exported maps | Imported by Godot and Unity (Godot documentation; Unity Manual) |
JPEG (.jpg) |
8 only (Substance 3D Painter documentation) | Reference and photos | "Doesn't support transparency" (Godot documentation) |
TIFF (.tif) |
8, 16 or 32-bit float (Substance 3D Painter documentation) | High-precision bakes and masters | Unity reads it and flattens layers on import (Unity Manual); not on Godot's list (Godot documentation) |
PSD (.psd) |
8 or 16 (Substance 3D Painter documentation) | Layered source files | Unity flattens layers on import, but "not to the file itself" (Unity Manual); not on Godot's list (Godot documentation) |
OpenEXR (.exr) |
16 or 32-bit float (Substance 3D Painter documentation) | HDR skies, height and displacement | Godot: "Supports HDR (highly recommended for panorama skies)" (Godot documentation); Unity picks an HDR output format automatically (Unity Manual) |
Radiance HDR (.hdr) |
HDR (Godot documentation) | HDR skies and probes | Godot and Unity import it (Unity Manual) |
WebP (.webp) |
8 only (Substance 3D Painter documentation; Godot documentation) | Web and 2D | Supports transparency; lossy or lossless |
DDS (.dds) |
Depends on the stored GPU format | Shipping GPU-ready textures; custom mipmaps | Uncompressed or block-compressed (DXTn) data (Microsoft Learn); Godot loads included mipmaps directly (Godot documentation) |
KTX / KTX2 (.ktx2) |
Depends on the stored GPU format | glTF, web and cross-platform delivery | KTX2 adds Basis Universal supercompression (khronos.org); Godot imports 2D KTX only, without cubemaps or arrays (Godot documentation) |
#Source formats
Bit depth sets how many steps each channel has. 8 bits give 256 levels, enough for most colour maps; height maps and smooth gradients may band. See bit depth and banding. Adobe's Painter export table is a handy reference for which formats can hold more: TGA, JPEG, BMP and WebP are 8-bit only, PNG and PSD 8 or 16-bit, TIFF up to 32-bit float, and OpenEXR 16 or 32-bit float (Substance 3D Painter documentation: Export settings).
Layers are only useful in the source file. Unity can import a layered PSD, but "flattening happens to the imported data in Unity, not to the file itself", so you can keep editing and re-importing (Unity Manual: Import a texture).
Supported lists differ. Unity reads BMP, EXR, GIF, HDR, IFF, JPG, PICT, PNG, PSD, TGA, TIFF and SVG (Unity Manual: Import a texture). Godot lists BMP, DDS, KTX, EXR, HDR, JPEG, PNG, TGA, WebP and SVG (Godot documentation: Importing images). Note that Unity's list has no DDS or KTX, and Godot's has no PSD or TIFF.
#GPU-ready formats
DDS is Microsoft's container: Direct3D uses it "for storing uncompressed or compressed (DXTn) textures", and it "supports single layer textures, textures with mipmaps, cube maps, volume maps and texture arrays" (Microsoft Learn: Programming Guide for DDS). Its DX10 header extension adds formats the original header cannot express, "such as floating point formats, sRGB formats" (Microsoft Learn: Programming Guide for DDS). Because the data is already block-compressed, the engine does not have to compress it again.
KTX is the Khronos equivalent: "an efficient, lightweight container format for reliably distributing GPU textures to diverse platforms" (khronos.org: KTX: GPU Texture Container Format). KTX 2.0 "adds support for Basis Universal supercompressed GPU textures", which "can be efficiently transcoded to a variety of GPU compressed texture formats at run-time" (khronos.org: KTX: GPU Texture Container Format). The KHR_texture_basisu extension lets glTF files carry KTX 2.0 textures (khronos.org: KTX: GPU Texture Container Format).
#Common mistakes
- Saving 16-bit bakes as TGA or JPEG. The extra precision is lost on save (Substance 3D Painter documentation: Export settings).
- Embedding textures in FBX. Unity advises against it; keep textures as separate files (Unity 6.6 Manual: Preparing your model files for export).
- Odd sizes. Unity: "it's better for performance to use power of two sizes whenever you can" (Unity Manual: Import a texture). See mipmaps.
- Expecting alpha from JPEG. It has none (Godot documentation: Importing images).
Related: texture formats, compression and mipmaps, bit depth and banding, colour space: sRGB and linear, channel packing, mipmaps, 3D file formats.
#Further reading and watching
References
- · Importing images (documentation source) · Godot documentation (GitHub) · docs · accessed 2026-10-21
- · Texture Compression Settings (Unreal Engine 4.27) · Unreal Engine documentation, 2021 · docs · accessed 2026-10-21
- · Export settings · Substance 3D Painter documentation · docs · accessed 2026-10-21
- · Import a texture · Unity Manual, 2026 · docs · accessed 2026-10-21
- · Programming Guide for DDS · Microsoft Learn (Win32), 2026 · docs · accessed 2026-10-21
- · KTX: GPU Texture Container Format · khronos.org, 2026 · docs · accessed 2026-10-21
- · Preparing your model files for export · Unity 6.6 Manual, 2026 · docs · accessed 2026-10-20
Pages that link here
- Texture maps explained Reference
- Texture formats, compression and mipmaps Topic
- Bit depth and banding Key term
- Unique texturing (texture painting) Topic
Last updated 2026-10-22