How to Convert Textures for Unreal Engine

Unreal Engine's texture pipeline is powerful but particular about input formats. The engine recompresses all imported textures to its own internal formats (DXT, ASTC, ETC2 depending on platform), but the quality of your source files sets the ceiling for the final result. A poorly compressed JPG source will look worse than a lossless PNG source even after Unreal's processing.

Texture management is one of the biggest performance challenges in Unreal projects. Textures typically consume more memory than any other asset type. Understanding how to prepare source files, set import options, and manage texture streaming is essential for shipping projects that look good and run well.

This guide covers the practical workflow of converting and importing textures into Unreal Engine, from source format selection through import settings and optimization.

Step-by-Step Instructions

  1. Choose a Lossless Source Format

    Unreal imports PNG, TIFF, TGA, BMP, PSD, HDR, EXR, and JPG. PNG and TIFF are the preferred source formats because they are lossless. Unreal recompresses everything internally, so starting with a lossless source means no quality is lost before Unreal's compression. TIFF supports 16-bit and 32-bit channels for high dynamic range data. Use TGA if your art pipeline is already standardized on it.

  2. Use Power-of-Two Dimensions

    Unreal strongly prefers power-of-two texture dimensions: 512, 1024, 2048, 4096, 8192. Non-power-of-two textures cannot use streaming, cannot generate mipmaps efficiently, and waste GPU memory. Always resize textures to the nearest power-of-two size before importing. If your source is 1800 by 1200, resize to 2048 by 1024 or 2048 by 2048 depending on the content.

  3. Import into Unreal Engine

    Drag the texture file into the Content Browser or use the Import button. Unreal automatically detects the texture type for most common naming conventions (textures ending in _N are treated as normal maps, _ORM as packed channels). After import, double-click the texture asset to open the Texture Editor and verify import settings.

  4. Configure Compression Settings

    In the Texture Editor, set the Compression Settings based on usage. Default is DXT1/5 for base color textures. Normalmap for normal maps (uses BC5 compression). HDR for lightmaps and emissive textures. Masks for single-channel data like roughness or metallic. UserInterface2D for UI textures. Correct compression settings are critical for quality and VRAM usage.

  5. Set Level of Detail and Streaming

    Configure the LOD Bias and maximum texture size per platform. For mobile targets, set max size to 1024 or 2048. For PC, 2048 to 4096 is standard. Enable texture streaming for large textures so Unreal loads only the needed mipmap level. Set the LOD Group (World, Character, Weapon, UI) to help Unreal prioritize streaming for visible textures.

Source Format Comparison

PNG is the most common source format for Unreal textures. It supports up to 16-bit per channel, has lossless compression, and supports alpha transparency. Most texture authoring tools (Substance Painter, Substance Designer, Quixel Mixer) export PNG by default. The file sizes are reasonable for version control systems like Git LFS or Perforce.

TIFF offers 16-bit and 32-bit per channel support, making it ideal for heightmaps, displacement maps, and any data that requires extended precision. TIFF files are larger than PNG but preserve the full dynamic range of your source data. For standard base color and normal map textures, PNG is sufficient. Reserve TIFF for cases where the extra bit depth matters.

Texture Memory Budget

A single 4096 by 4096 texture with DXT5 compression uses approximately 32MB of GPU memory including mipmaps. At 2048 by 2048, that is roughly 8MB. Unreal's texture streaming helps manage this by loading only the mipmap levels visible at the current camera distance, but every texture still has a memory footprint.

For a typical PC game scene, budget 500MB to 1GB for textures, 200MB to 500MB for geometry, and the remainder for other assets. Use Unreal's Stat Streaming and console commands to monitor texture memory usage during development. The most common texture optimization mistake is using 4096 by 4096 textures for surfaces that are never seen up close.

Convert Textures for Unreal

Convert your texture source files to Unreal-compatible formats with imageconvert.co. Convert WebP, HEIC, or other formats to PNG or TIFF for import. The conversion runs entirely in your browser, keeping your game assets private and on your development machine.

Frequently Asked Questions

What texture format does Unreal Engine prefer?

PNG is the most commonly used and recommended source format for Unreal Engine textures. It is lossless, supports alpha, and works with all of Unreal's texture import and compression settings. TIFF is preferred when you need 16-bit or 32-bit precision for heightmaps and displacement maps.

Do textures need to be power-of-two in Unreal Engine?

Yes, strongly. Unreal requires power-of-two dimensions (512, 1024, 2048, 4096) for texture streaming and efficient mipmap generation. Non-power-of-two textures cannot stream, waste GPU memory, and may not compress correctly. Always resize to power-of-two before importing.

Should I use JPG or PNG for Unreal textures?

PNG is almost always the better choice. Unreal recompresses all textures internally, so starting with a lossless PNG source gives Unreal the best data to compress from. JPG source files have already lost quality to compression, and that lost data cannot be recovered by Unreal's pipeline.

What size should game textures be?

It depends on the asset and target platform. For mobile, 512 to 1024 pixels per texture. For PC, 1024 to 2048 for most surfaces, 4096 for hero assets the camera gets close to. Use 8192 only for terrain or large environmental surfaces. Larger textures consume exponentially more GPU memory.

Convert textures to PNG

Convert TIFF to PNG

Related Reading