Texture Compression settings Question!

Coming from Unity, at first I was having a little trouble trying to find the best texture quality compression Type in UE4. In the end I settled with “UserInterface2D (RGBA)” Texture Type which gave me visually the closest texture image quality compared to my original uncompressed file, although i assume this is meant for UI textures perhaps given the name?

I was wondering if there could be some other setting I could use with a different less taxing compression as well as the pros and cons in the long run of using just this type over the default one.

My game relies heavily on high res textures and the slightest blurring affects the over all look. I am also avoiding any Mip map generation (this also doesn’t concern me since the view distance is always locked and works without mipmaps).

I am also assuming that this compression type will use more of GPU memory than the default one?

So by saving on Mipmaps and making up instead with memory used on highest texture compression quality, I am hoping it would balance the books a little in terms of memory usage since mip maps also use more memory.

Is this sound reasoning over all or are there other setting i may be able to tweak regarding texture quality?

Is there a real reason you NEED high resolution, low compression, mip-less textures beyond that it looks slightly blurry otherwise? You probably would be better off running a sharpening filter, rendering at a higher resolution and down sampling, or changing your approach to texturing.

The texture asset window shows how much video memory your texture is going to use at the current compression/mipmap settings in real time. While mip maps do increase memory usage by around 30%, they drastically improve performance if your texture is ever displayed at any angle/distance where its shown at under half its size. That’s because when you go under that size, the GPU needs to start skipping texels while displaying the texture (the more zoomed out, the more texels it needs to skip), which means there will be more cache misses, forcing the GPU to access memory more often.

The UserInterface2D preset means uncompressed, BTW. Since UI elements are often displayed without perspective and at near 1:1 texel/pixel ratio, they can do without mipmaps. UI textures are also often not power-of-two sized, which is not compatible with mip maps and most block-based GPU texture formats.

Thanks guys for your replies.

So UIInterface is uncompressed, I was wondering why the quality jumped and so did the file size.

If I hadn’t need it that much I wouldn’t ask :). Unfortunately the default compression methods are not cutting it, my camera is always at certain distance away from the ground and looking down like a strategy game, I am loosing all landscape and environment hand painted stylised texture details even at 4K or 2K ( they were painted at 8K scaled down) everything is turning blurry, I didn’t have this when the scene was tested in Unity with their compression method. The image was sharper and clear.

I also switched from TAA to MSAA because that was causing even more blur at that distance, also my units are fast moving and relatively small on screen so UE doesn’t like that with TAA. Its like Blur heaven in UE4 by default if you are doing anything other than an FPS.

Sharpening filters always mess things up, never really worked in my case. But I will keep trying other things.

I got rid of Mip maps because at no time the camera would be looking at a distant horizon or a distant greater than what the original texture could handle (in other words the distance is too short for it to require any mip maps in my scene). It was also causing all sorts of texture loading artifacts in UE where the texture gets blurry and then sharp, the typical mip map loading way. This may not be noticeable at long distances but in my scenes they would be.

Will keep looking. But thanks for the detailed explanation!

Further tests.

The environment assets seem to be passable with the default compression, but what suffers most are more gradient coloration notably on landscapes and other larger flat surfaces, and I got lots of those, and without the uncompressed “UIInterface” the compression artifacts are very much evident with the default setup.

Do I need to switch to 16 bit mode or something? what would be the limitations of that setup?

I am surprised as to why there can’t be a decent compression system that would work well with the engine without producing such artifacts?

I mean as a figure of speech I can get better images with a jpeg compression out of Photoshop…

Pictures do help. Right now it is guesswork. But what I can tell for you sure, unless your top down game is 2d, you do want mip maps, both for performance and visual quality considerations. It has nothing to do with visual style.

Below sample images from UE for comparison.

Regarding Mip Maps I have a few issues with it:

1 - Even though my camera is top down it also has significant distance between it and the ground. Unreal sometimes (I assume) thinks that the object is at a distant so it is force mipmapping it down in resolution and losing detail again unnecessarily which is not something that i want. I want to keep some of these textures at full res at all times.

2 - During camera pans onto different sections of the map Mipmapping is sometimes causing a delay and visually noticeable loading of the textures going from low to high res, and because my terrains or objects make up large amounts of the map with sometimes single painted textures for an entire section of a terrain, the entire thing on screen visually goes into mipmap loading mode and displays the textures randomly in low res by the time it loads them to relatively high res, I say relatively because it sometimes gets stuck to medium res load. It’s not the case always but it happens. It’s a gamble to have this there since It immediately puts you off as a player.

I’m not sure what the solutions is to these issues. if there are any, since i find the mipmap loading issues constantly in shipped titles everywhere. especially FPS ones. But I can’t afford to have it here.

Things seem to run fine without mipmapping the major objects for now so that’s how I proceeded. But the texture compression is still my big question mark.

I frankly have no idea what I am looking at. Artifacting with texture compression is expected, and if it is a problem, you can use uncompressed 8 bit texture.

Your problem with mipmapping is a problem with texture streaming, not mipmapping. You can restrict/disable it.

Thanks, I was merely pointing out the texture compression issues by demonstrating extreme artifacting in textures especially those with more gradient coloration, I was also referring to the fact that we were getting far better compression quality results in Unity and was asking why not in UE4. My texture compressed is 8 mb and uncompressed will occupy 65 mb of memory. There should’ve been or should be a better option implemented to avoid these two extreme choices.

The only reason for difference between UE4 and Unity could be that latter one used BC7 compression over BC5 in your case. You can do the same.