1
\$\begingroup\$

According to msdn, the BC1 block compression format is for images with 3 color channels and 1 bit alpha channel and the BC4 is for images with 1 color channel and no alpha.

Using the same RGBA input image I would expect the output of this command

texconv.exe -f BC1_UNORM diffuse.tga

to be larger than the output of this other command

texconv.exe -f BC4_UNORM diffuse.tga

Since the resulting DDS should only have information on one channel, but both DDS have the exact same size. The only difference being that the BC4 compressed one appears red (as expected).

Is this the expected output?

\$\endgroup\$
1
\$\begingroup\$

Given the documentation, it would seem that is the expected output.

BC1 represents the data before compression as 5 bits red, 6 bits green, 5 bits blue, and 0 or 1 bits alpha, for 16 or 17 bits per pixel. BC4 represents it as one 8-bit channel, for 8 bits per pixel.

However, then it compresses it. I'm not sure how exactly the compression works, but if you look at the tables provided that give specific information on each compression, you'll note that both BC1 and BC4 achieve 8 bytes per 4x4 pixel block (or an average of 4 bits per pixel).

As I said, I can't explain exactly how it achieves that, maybe someone will explain in a comment, but ultimately the docs do seem to say that your results are exactly what are expected.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ So with BC4 I get higher quality.. Thank you! \$\endgroup\$ – Inuart Sep 25 '14 at 21:30
  • 1
    \$\begingroup\$ Given that it's lossy, that's probably true, but I'd need to read a lot more about the compression algorithms before I can say for certain. If you're curious though, this page goes into great detail on BC1-5. msdn.microsoft.com/en-us/library/windows/desktop/… \$\endgroup\$ – Morgan Patch Sep 25 '14 at 21:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.