DDS file-size and 8/18 bit question


EDIT: Im one step further already. Its the Albedos that get 10.9 MB and metal and normal get 21.8 MB.
Seems like that is normal. Multiple ppl told me so by now that this is also like this for them. So basically there is no need to convert to 8 bit before. There will be no saving in the file-size. Only the resolution seems to have influence.

Yesterday I came around some, for me, weird behavior with the size of a dds file after the png got converted to dds.

Before I had a chat with some member from FSDeveloper about 16 bit and 8 bit and how the use of a 8 bit albedo can save a lot of file size without visual loss of quality. I wanted to give it a go.

Then I went to my substance painter textures and re-exported them in 8 bit.
Yes, the png that came out then was indeed 1/3 of the size of a 16 bit export.

I applied this one 8 bit albedo to my blender object and exported the gltf.
I thought “amazing, that saves me lots of space”. Until I built the project. Because now it has the identical file size like the one with the 16 bit had.

At one point I took a look at my texture output folder. And to my surprise, nearly every single dds texture had the exact same size. Despite having very different pngs as source, ranging from 20 to 70 mb per image.

Can be seen here, they all have 21,8 mb

Further down I saw some of the textures that have only the half of it, 10,9 mb (not visible in pic). All of them were 4k 16bit. I wondered why on earth some have 21.8 and others 10.9 with the same export settings and had a look at the UV map.

Nothing special, it was filled like the bigger ones. couldn’t see any difference that leads to the double file size.

I discussed this with 3 other ppl now and they confirm this is the case after they build the project too. Amd none of them had an explanation, basically all of em were rather surprised of this.

So my questions are 2 basically:

1 what defines the file-size of a DDS file after it got converted from a PNG.

2 what meaning has 8 and 16 bit png, if after being converted they have the exact same file-size?

Would be great to get some insight here.

Weird I also checked one of my add-ons and all but one dds texture file is 683kb’s but the last texture is double at 1,386kb’s.

Be sure to read the update in my post :slight_smile:

It’s most likely the albedo that has less. Looks like a normal thing.

1 Like

The DDS is not compressed. If the PNG was compressed at first, it will be decompressed into the DDS, that will take a lot of size. Second reason: a DDS is much larger than a PNG because the DDS can contain several versions of the image at smaller sizes, to show at larger distances. This is called the MIPMAP level of your texture. A texture can have 8-12 MIPMAP-levels, all adding to the size.

1 Like

Thanks for the reply.

That last part wouldn’t be what i see here though.

Atm it looks like that for me:

Input png size : 80mb → output DDS = 21mb
Input png size : 20mb → output DDS = 21mb

If we take the normal or metal map at least. The albedo is smaller.

So that part that a dds would be bigger automatically is not the case for me.

Also, so you say that the mipmap levels come from the dds converter? I always thought one would have to do it manually.

Sorry to sound doubtful, i just want to understand it :slight_smile:

With VS-2019 you get a menu option to generate all mip levels. When you then save your DDS, the levels are included. Main part is of size questions is always compression, I’m actually unsure after reading your answer ! You get DDS files that are smaller. I’ll look into it. btw. mip-mapping is not exponential… the size of a mip-mapped texture is binary on distance, so you have 2048-1024-512-256-128… a result texture with mip-mapping will be about 2x the size of a non-mipmapped texture.

(remark scrapped)