views:

126

answers:

1

(Quick version: jump to paragraph next to the last one - the one beginning with "But")

I was happy in my ignorance believing that PVRTC images were 4 or 2 bits per channel. That sounded plausible. It would give 4+4+4+4 (16 bit) or 2+2+2+2 (8 bit) textures, that would have 2^16 (65536) and 2^8 (256) color depth respectively. But reading through some documents about PVRTC, I suddenly realized that it said 4 bpp (and 2 bpp), i.e. 4 bits per pixel. Confusion and madness entered my world.

What?! 4 bits? Per pixel? But that's just 1 bit per channel! (And don't even get me started on the 2 bit one, that one was far too weird for my brain to grasp at the moment.) Some moments into this agonizing reality, I came to understand this wasn't so real after all. Apparently, when saying 4 bpp, it's referring to the compression, and not the color depth. Phew, I wasn't not mad, after all.

But then I started to wonder: what color depth do these images have then, after decompression? I tried to look this information up, but apparently it's not considered important to mention (or I'm just bad at finding info).

The fact that PVRTC compressed images don't seem give any visible artifacts in OpenGLES with the pixel format RGBA4444 would suggest they're 16 bit (using 32 bit png images with the pixel format RGBA4444 in OpenGLES on the iPhone gives very visible artifacts).

+1  A: 

According to the paper http://web.onetel.net.uk/~simonnihal/assorted3d/fenney03texcomp.pdf the final output of the decompressor is 8 bits per channel.

Mark Ransom
Intriguing. How come the 32 bit PNGs get artifacts, but the PVRs don't? (I'm using cocos2d for iphone.)
quano
I wish I had some inside knowledge to help answer that, but I can't.
Mark Ransom