MDolenc said:
Once shaders are fast enough, why not do texture (de)compression with them?
As shaders get faster, developers are just as likely to want to use all those extra cycles for something else. Besides, doing random access of texture data and performing bit unpacking is not going to be fast with the current instruction set and so, if you're going to add specialised HW to make the system faster, you might as well make it automatically decompress textures (all IMHO).
Hyp-X said:
I agree, that space is the most important part (while being faster IS a nice thing as well). And you can no longer rely on AGP memory either, as you'll soon run out of base memory as well.
If you have lots of textures being used in the same image then it's not just space: bandwidth is still going to be a problem.
(To Humus
I don't see bandwidth issues magically going away simply because there's now this great opportunity to write really slow shader code
Dave B said:
Personally I think VQ compression is great, sure comrpessing the textures in an overnight job...
Hardly. It took about ~10-20% longer than the S3 compression tool on my old PC.
...but you get so much better compression ratio's than with S3TC,especially as the texture gets larger.
I would also say that, on average, the quality was
slightly lower with
DC's VQTC than S3TC but, given the ~2-fold decrease in storage costs, this was completely acceptable.
You can also read and decompress a VQ compressed texture quicker than you can read an uncompressed
texture which is stunning if u ask me.
You'll get that with S3TC as well. Because the HW to do fast decompression has to be included in the system, you get savings because compressed textures use the external
memory bus far less, freeing it up for other tasks.
IMO the 4:1 compression ratio of alpha textures with S3TC
I personally dislike quoting a 'ratio' for texture compression since the schemes are nearly always lossy. FWIW, DXTC storage costs are 4bpp for opaque (and punch-through) and 8bpp for translucent textures, while the DC's VQ was always ~2bpp.
(Note that putting alpha in the VQ
sometimes meant more degradation because it was trying to represent more data with the same number of bits.)
Simon, are you allowed to hint as to exactly how PVR-TC works? is it an extension of VQ or a whole new thing or what?
It'll become public eventually, but for now I'll not say anything on it other than it's nothing like the VQ (i.e. it has no indirection) and is reasonably cheap to implement in HW (e.g. it's used in MBX which has a very tight gate budget).
andypski said:
VQ compression is also not great for hardware, as Simon has touched upon, since you need to hide an additional indirection. Also, for properly orthogonal support you have to be able to use N different sets of VQ palettes, where N is the number of simultaneous textures you support.
IIRC DC used a second cache stage and each texture had its own palette/codebook (although, having said this, for small textures where the compression ratio would effectively decrease, you could actually pack textures together so they borrowed codes from neighbouring textures).