The Texture Asset Editor provides a means for you to preview a Texture Asset and edit its properties, such as previewing specific color channels, making color adjustments directly in the Editor, modifying compression properties, and much more. Texture Assets are often used in combination with the Material Editor but can be used directly with some components in Unreal Engine, such as applying a cubemap to a Sky Light.
Types of Textures Assets
There are multiple supported texture file types you can import into or create in Unreal Engine. This can include standard image types (.png and .jpg), cubemaps (.exr), IES Profiles (.ies), volume textures, and render targets.
You can import and save each of these types of files as Texture Assets in the Content Browser. When you open one, depending on the type of texture it is, the Texture Asset Editor customizes the toolbar with texture-specific options.
Opening a Texture Asset Editor
Double-clicking on any texture asset in the Content Browser or in an assignment slot of another asset, such as a Static Mesh, opens it in the Texture Asset Editor. Alternatively, in the Content Browser when you right-click on a texture, you can select Edit from the context menu to do the same thing.

Three example texture assets used for the ThirdPerson Template character Quinn.
Texture Asset Editor Interface
When you open a Texture Asset, the Texture Asset Editor will look similar to the example below. From this editor, you can preview the texture and make adjustments to the asset.

The interface includes the following:
Toolbar
The Toolbar provides non-destructive tools and toggles to inspect and preview this texture. Depending on the type of texture asset (cubemap, volume, texture), the toolbar will display texture-specific options.

A cubemap texture opened with the Texture Asset Editor displaying many of the toolbars tools.
Toolbar Option | Description |
---|---|
Compress | Compress this texture. |
Reimport | Reimports the texture from its source file. |
Color Channels (RGBA) | Toggle which color channels are currently displayed by clicking them. When grayed out, that color channel is not shown in the preview window. |
Mip Level Selector | Enabled the checkbox to enable mip selection. Use the dropdown to select a specific mip or use the +/- buttons to scroll through the mip levels. |
Exposure Bias | For Cubemap / IES textures, use this setting to brighten or darken the source image. |
Slice | When enabled, Texture2DArray or TextureCubeArray displays the array element with the specified index instead of the standard view where all the array elements are partially visible at the same time. |
Face Selector | For Cubemap textures, enabling this checkbox allows you to preview individual faces that make up the cubemap texture. |
3D View | For Cubemap textures, enabling this checkbox allows you to preview the cubemap as a 3D scene. Left-mouse click and drag the preview to rotate the view. |
Zoom | Use the slider to scale the textures preview size. Use the dropdown to select predefined sizes along with setting scaling options for scaling it to fit or fill. |
View Settings | This dropdown includes the following viewport options:
|
Face Selector
Texture assets that are a cubemap, texture array, or volume texture include the Face option to view individual faces that make up that texture. For example, when you view a cubemap and enable the Face checkbox, you can view one of the six individual faces that make up the long-lat unwrap by entering an ID number into the text field.
The face of the cubemap displayed matches the DDS orientation and order: Positive X, Negative X, Positive Y, Negative Y, Positive Z, Negative Z.
3D View
Texture assets that are a cubemap, texture array, or volume texture include the 3D View option to preview the texture in its intended 3D representation. You can rotate the view of the 3D representation by left-clicking the mouse and dragging in the preview window.
Slice
Texture 2D Array and Texture Cube Array Assets store a set of specified Texture Assets in a single texture array. Use the Details panel to specify the Source Textures in a Texture 2D Array and Texture Cube Array. When you have assigned texture assets to all added slots, the preview will display the sliced preview in the viewport.
Use the Slice checkbox to preview the individual Texture Assets that make up the array.
Viewport
The Viewport displays a preview of a Texture Asset. While most toolbar options are similar across all Texture Assets, such as RGBA toggles, exposure bias, and zoom amount, some textures offer additional options such as face selection and 3D view.
Details Panel
The Details panel displays the properties and settings of the Texture you can edit.
Texture Information
The top-most section displays texture-specific data, such as its size in various ways, how much disk space it consumes, format, and so on. Below this section, you can make adjustments to this texture. Some of the settings you adjust are reflected in this texture information, such as the properties for Encode Speed and LOD Bias.

Property | Description |
---|---|
Imported | The size of the source texture imported. |
Displayed | The currently displayed texture size in the preview window. |
Max In-Game | The maximum size this texture can be while in-game. This will not be larger than the source texture's imported size, but could be smaller depending on configuration and texture settings. |
Resource Size | The amount of unaligned memory used by the raw texture data. |
Has Alpha Channel | Specifies whether the texture is currently using an alpha channel or not. You can disable the texture's alpha channel through settings found in the Details panel, while the source texture still supports the alpha channel. |
Source Alpha Detected | Specifies whether the source texture has an alpha channel or not. |
Method | Specifies whether the current texture is using streaming or not. |
Format | The compression setting format used for this texture. |
Combined LOD Bias | Displays the bias set by LOD Bias towards a max mip level to use. |
Number of Mips | The number of mip levels this texture uses. Higher resolution textures will have more mips than lower resolution textures. |
Encode Speed | Displays the speed of encoding used for this texture, such as Fast, Final, or Custom (when using the Oodle panel). |
Level of Detail Settings
The Level of Detail section provides mip and LOD settings. During import of the texture, a mip map chain is created starting with Mip 0. The mip map chain consists of multiple levels of sample images, with each being half the resolution of the level before.

Property | Description |
---|---|
Mip Gen Settings | Per Asset specific setting to define the mip-map generation properties, like sharpening and kernel size.
|
LOD Bias | A bias to the index of the top mip level to use. |
Texture Group | The texture grouping this texture belongs to. |
Advanced Properties | |
Preserve Border | When checked, the texture's border will be preserved during mip map generation. |
Downscale | How much to downscale the source texture for textures without mips.
|
Downscale Options | Downscaling options available when downscaling is used for textures without mips. Choose from:
|
Num Cinematic Levels | The number of mip levels to use when the scalability setting is set to Cinematic. |
Never Stream | When enabled, this texture will never be streamed. |
Global Force Resident Mip Levels | Global and serialized version of ForceMipLevelsToBeResident. |
Mipmapping
Mipmapping is the process of downscaling higher resolution textures to lower resolution ones through mip levels. Each mip level halves the resolution of the preceding one, enabling textures to have different levels of detail at farther distances — often where less detail is needed to maintain its look. This process saves rendering time by using lower resolution textures, and reduces occurrences of artifacts.
Mip mapping generates as many mips as are needed based on the size of the source texture. For example, if the texture is 1024 x 1024, it will have ten mip levels. If the texture is 4096 x 4096, it has twelve mip levels.
Click image for full size.
In the scene below, two materials are set up using their own diffuse and normal map textures. The material on the left has textures with no mip maps. The material on the right uses mip mapping. Notice how the material on the left causes undesirable aliasing in the far distance compared to the material on the right that uses mip maps. Lowering the resolution through mip levels also helps improve the overall look of the textures at these far distances as well.

Left, material with textures with no mips; Right, material with textures using mips.
Zooming in on the two materials, you can see the different mip mapping has in reducing aliasing.

Left, material with textures with no mips; Right, material with textures using mips.
You can view individual mip levels by checking the box next to the Mip Level selector. When enabled, choose a mip level from the dropdown menu.
When selecting a mip level, it will automatically switch to that mip in the viewport and in the Details panel's texture information section, the currently Displayed size will change to reflect the selected mip level's size.
Compression Settings
The Compression category provides configurable settings for quality that affect the amount of compression applied to the texture and ultimately its size on disk.

Property | Description |
---|---|
Compress without Alpha | If enabled, force the texture's alpha channel to be opaque for any compressed texture output. Does not apply if the output format is uncompressed RGBA. |
Editor Show Final Encode | If enabled, compress the texture with final quality during this Editor session, making it use the Final level (RDO) encoding rather than the Fast level (non-RDO) which would be the default. This enables you to visually inspect the RDO encoding which will be used in the game. |
Editor Defer Compression | If enabled, defer compression of the texture until save or manually compressed in the texture editor. |
Compression Settings | Compression settings to use when building the texture. Choose a compression method from the dropdown. |
Advanced Properties | |
Maximum Texture Size | The maximum resolution for generated textures. A value of 0 means the maximum size for the format on each platform. |
Lossy Compression Amount | Controls Oodle Texture RDO Lambda (the compression factor) per texture. The project has an overall RDO quality level, but in some cases, it needs to be adjusted per-texture. You can use this to turn RDO off, or to increase / decrease the trade off quality with the compression ratio. |
Oodle Texture SDK Version | This selects the version of the Oodle Texture libs to use for encoding a texture. When you create new textures, this is set to the current version and it stays with that version so that future updates don't cause patches. In some cases, you may want to change a texture to use the latest version to fix an encoding issue. You can enter "latest" in the numeric field to update. If you leave the field blank, the legacy fallback for the project is used. When you reimport a texture, it is automatically updated to use the latest SDK version. |
ASTC Compression Quality | The compression quality for generated ATSC textures, such as those mobile platform textures. Use the dropdown to set the quality. |
Compression Cache ID | Change this optional ID to force the texture to be recompressed by changing its cache key. |
Cook Platform Tiling Settings | If the platform supports it, tile the texture when cooking, or keep it linear and tile it when it's actually submitted to the GPU. |
Texture Settings
The Texture category provides configurable settings for handling the texture asset which can affect its appearance and usage in materials or optimization methods, like Texture Streaming.

Property | Description |
---|---|
Power of Two Mode | How to pad the texture to a power of 2 size (if necessary).
|
Padding Color | The color used to pad the texture out if it is resized due to Power of Two Mode. |
sRGB | Specifies whether the texture and its source are in sRGB Gamma color space. This can only be used with 8-bit and compressed formats. This should be unchecked if using alpha channels individually as masks. |
Advanced Properties | |
X-axis Tiling Method | The addressing mode to use for the X-axis. Choose from wrap, clamp, or mirror. |
Y-axis Tiling Method | The addressing mode to use for the Y-axis. Choose from wrap, clamp, or mirror. |
Do Scale Mips for Alpha Coverage | Specifies whether mip RGBA should be scaled to preserve the number of pixels with values greater than or equal to Alpha Coverage Threshold. If this is unchecked, alpha coverage thresholds are ignored. |
Alpha Coverage Threshold | The alpha values per channel to compare when preserving alpha coverage. 0 means the channel is disabled. Typical good values are in the 0.5 to 0.9 range, and not 1.0. |
Use New Mip Filter | When enabled, it uses a faster mip generation filter with usually the same result. In rarer cases, the new filters can cause chroma shifts that the old filters didn't. If that's the case, disable this feature. |
Flip Green Channel | When enabled, the texture's green channel will be inverted. This is useful for some normal maps. |
Filter | The texture filtering mode to use when sampling this texture. Choose from:
|
Mip Load Options | Choose how the texture mips should be loaded with:
|
Normalize after making Mips | This setting affects normal maps only. It normalizes colors in normal maps after mip generation for better and sharper quality. When mip maps are made for normal maps, the normals are blended together, which has a tendency to make them shorter (unnormalized). When you put them into an encoding, such as BC5, that drops components, you should normalize them before dropping components. Failing to do this means that the normal detail goes away in mip maps, making them flatter or softer in the distance mip levels. The softening at distances is different from intentional softening which you can do using the composite normal to roughness transform. This setting does not affect the top mip level, only lower mip levels. Turning this on should make normal maps in the distance look shaper (more correct). |
sRGB Use Legacy Gamma | When enabled, it uses a simplified legacy gamma space, such as pow(color, 1/2.2), for converting from FColor to FLinearColor, if doing sRGB. |
Source Color Settings | Texture color management settings for source encoding and color space.
|
Virtual Texture Streaming | Enable if you are streaming this texture using Virtual Texturing. |
Asset User Data | An array of user data stored with this asset. |
Texture Adjustment Settings
The Adjustment category provides configurable properties to edit your texture in a non-destructive way without having to leave the Texture Editor, such as adjusting its brightness, vibrance, saturation, and more.

Property | Description |
---|---|
Brightness | Adjusts the texture brightness by scaling the HSV value. This is a non-destructive adjustment and requires the source art to be available. |
Brightness Curve | Adjusts the texture curve by raising the HSV value to a specified power. This is a non-destructive adjustment and requires the source art to be available. |
Vibrance | Adjusts the intensity of muted colors while leaving saturated colors alone using an HSV saturation algorithm. This is a non-destructive adjustment and requires the source art to be available. |
Saturation | Adjusts the saturation by scaling HSV saturation. This is a non-destructive adjustment and requires the source art to be available. |
RGBCurve | Adjusts the texture RGB curve by raising linear-space RGB color to the specified power. This is a non-destructive adjustment and requires the source art to be available. |
Hue | Adjusts the texture hue (between 0 to 360) by offsetting HSV hue by a value in degrees. This is a non-destructive adjustment and requires the source art to be available. |
Min Alpha | Remaps the alpha to the specified min/max range and defines the new value of 0. This is a non-destructive adjustment and requires the source art to be available. |
Max Alpha | Remaps the alpha to the specified min/max range and defines the new value of 1. This is a non-destructive adjustment and requires the source art to be available. |
Chroma Key Texture | Whether to chroma key the image, replacing any pixels that match the Chroma Key Color with transparent black. |
Chroma Key Threshold | The threshold that components have to match for the texel to be considered equal to the Chroma Key Color when chroma keying. To require an exact match, the value must be less than or equal to 0. |
Chroma Key Color | The color that will be replaced with transparent black if chroma keying is enabled. |
Compositing Settings
The Compositing category provides settings for handling compositing with this texture and how its applied.

Property | Description |
---|---|
Composite Texture | Can be defined to modify the roughness based on the normal map variation (mostly from mip maps). Max Alpha is helpful to define a base roughness if no source alpha is there. The normal map should have at least as many mips as this texture. |
Advanced Properties | |
Composite Texture Mode | Defines how the Composite Texture is applied. For example, CTM_RoughnessFromNormalAlpha. |
Composite Power | Controls how strong the compositing effect is. The default is 1 and higher whole number values (1, 2, 4, 8) result in a stronger effect. This is not a slider because the texture update would not be fast enough. |
Oodle Panel
The Oodle panel provides information about the current settings affecting this texture, and lets you see how the Rate Distortion Optimization (RDO) encoding options will affect the compressed size on disk.
Oodle Texture Encoding Information
The top-most section of the Oodle panel displays information about how the texture is encoded. This is a good place to check whether RDO is on or off when diagnosing potential artifacts.

Property | Description |
---|---|
Encoder | The name of the encoder used for the texture. |
Encode Speed | Specifies whether the texture was encoded with Fast or Final encoding settings. |
RDO Lambda | The RDO lambda value used for this texture. RDO lambda controls how much Oodle should trade image quality for distribution sizes. This is not memory usage. |
RDO Lambda Source | Where the RDO lambda value comes from. Lambda values can come from Project Settings, the texture level of detail (LOD) group's Lossy Compression Amount, or the texture's Lossy Compression Amount. |
Effort | The encoding effort used, which refers to how much CPU time Oodle spent trying to find a higher quality result. |
Universal Tiling | When enabled, Oodle adjusts its RDO calculations to consider that the texture will get tiled for console platforms. This has no effect for non-RDO encodes. For example, RDO Lambda must not be 0. This has no effect if you are not distributing on consoles. |
Try Encodings
The Try Encodings provide a means for you to experiment with various texture encoding settings to see how they affect this specific texture.
These changes are visible while playing in the editor but are not saved or used once the Texture Asset Editor is closed. For these changes to be permanent, you need to update the settings in the Project Settings. Some settings are not configurable per-texture, such as Effort and Universal Tiling.

Property | Description |
---|---|
Enabled | If checked, allows you to experiment with Oodle Rate Distortion Optimization (RDO) compression settings to visualize results. |
RDO Lambda | The Rate Distortion Optimization (RDO) lambda to encode for experimentation. 0 disables RDO entirely. 1 is the largest file size, and 100 is the smallest. |
Effort | The encoding effort to try. Effort controls how much CPU time is spent on finding better results. See the Oodle Texture documentation for more information. |
Universal Tiling | The universal tiling to try. See the Oodle texture documentation for more information. |
On-disk Sizes
The On-disk Sizes shows the benefits of RDO encoding for your texture by pulling the compression settings for your project and using those to compress the texture bits in a manner similar to how it happens during actual packaging of your project.
This is not exact! However, when combined with the Try Encodings section settings, it gives you an idea of the scale of benefits you can expect for different RDO lambda values.

Property | Description |
---|---|
Enabled | If checked, texture data will be compressed in the same manner as project packaging in order to estimate the benefits of Rate Distortion Optimization (RDO) encoding of the texture. |
Packaging Configuration | Specifies which set of packaging settings to use from Project Settings under Project > Packaging > Advanced > Compressor Effort Level. Generally, this should be left at Distribution. Choose between Debug Development, Test Shipping, and Distribution. |
Oodle Compressor | The Oodle Data compressor used on this texture. |
Oodle Compression Level | The compression level for the Oodle compressor. This is the corresponding name for the numeric value specified in the Compressor Effort Level in the Project Settings. It represents how much time Oodle spends trying to get smaller results. |
Compression Block Size | The chunk size passed to Oodle Data during packaging. You control this in the Project Settings under Packaging > Advanced > Package Compression Commandline Options with -compressionblocksize= . The default block size is 64kb if one is not set. |
Uncompressed Size | How big the texture is without any packaging compression. If you disable packaging compression, this is the size you get. |
Compressed Size (Estimate) | How big the texture is likely to be after compression. As the RDO lambda gets larger, this should get smaller. |
Additional Notes
The following are some additional notes that are useful when working with textures in your project. These include best practices and optimizations you can make to improve textures in your project.
BC6 and BC7 Compression
Consider the following when using BC6 and BC7 compression for your textures:
- We recommend using HDR Compressed (BC6) and BC7 since they have good best-fit mappings for mobile targets that don't support them natively. For example, BC6 will map to RGBA16F and BC7 will map to ASTC 4x4 which is not natively supported.
- HDR Compressed/BC6H is high quality and should be used instead of uncompressed HDR (RGBA16F) except where quality dictates. HDR compressed is 8x smaller in GPU memory than HDR (RGBA16F).
- BC7 is higher quality than BC1 (AutoDXT) and takes 2x as many bytes for RGB (non-alpha) images. BC7 is a good choice for images that do not encode well in BC1, such as when there are unrelated mask images packed into different color channels.
- BC7 with alpha (RGBA) takes the same number of bytes as BC3 (AutoDXT with alpha, also called DXT5). It can be higher quality at the same size in GPU memory.
We do not recommend changing existing BC3 usage habits to BC7 at this time, but it is an option for specific textures that could benefit from doing so.
Non-Power of 2 Mip Maps
Non-power of 2 textures support mip maps. However, power of 2 textures is still required in order for them to texture stream. The top mip map level must be a multiple of 4 in order to use texture compression. Non-power of 2 textures have their Mip Gen Settings automatically set to NoMipMap at time of import. To enable mip maps for non-power of 2 textures, change the Mip Gen Settings to another from the dropdown list.
Float32 Import and GPU Texture Formats
You can import and store 32-bit float image data in the UASSET. Previously, this would automatically be converted to a 16-bit float at time of import. You can also choose 32-bit float images as a GPU texture format. However, 32-bit float is not available on all GPUs and mobile only supports point-sampled 32-bit float images. If you don't set the texture to the Nearest filter on those targets, the texture will be converted to a 16-bit float.
Import and Export Pixel Format Support
Consider the following Import and Export options for textures:
- Importing and exporting supports a variety of pixel formats and usually stores the imported pixels losslessly in the UASSET (without conversion). Import HDR either imports the image as a 2D texture or a LatLong Cubemap. Export gives you output formats that can store the texture data without any conversion. If you're not sure, use the DDS export output format since it stores all the Unreal Engine UASSET formats natively.
- You can import a JPEG, store it as a JPEG in the TextureSource, and export the original JPEG back out losslessly. It will be lossless in the sense that you get the same JPEG back out, but no additional loss is created as a result. You retain the original lossiness of the JPEG format before import.
- You can import textures up to 32768 x 32768 (without UDIM) as Virtual Textures.
Texture Arrays
You can make Texture Arrays from source images of varied formats and sizes (they don't have to all match). Sizes are unconstrained and image sizes will be stretched to match the largest image in the array.
Fast and Final Encode
This mainly impacts the Oodle Texture RDO, which makes textures more compressible in packages.
The Oodle Texture encoding includes two sets of options and speed levels with Fast and Final. For many projects, the Final level encode is set to RDO encode, which is used for cooking. The Fast encode is non-RDO. In the editor, Final RDO textures are loaded if they are available, such as from a shared DDC or a cook, but newly imported textures are encoded with the Fast non-RDO option for speed. If you work with an existing texture which was Final encoded and you modify it, it changes to Fast encoded. This may cause it to visually change as you are no longer seeing the RDO encoding.
The Fast and Final settings for your project are found in the Project Settings under Engine > Texture Encoding.