3D Texture Compression (not 2D)

Hello all

Can anyone tell me any cards, even one, that actually supports 3D Compressed Textures in hardware?

This information is proving very hard to obtain, I even just queried NVidia directly.

In most specs they will at least mention S3TC, but as far as I know S3TC only applies to 2D Textures, or am I mistaken ?

Rather keen to know.

Best Regards
Jon

Damn, forgot to tick automatic Email notification, doing that here.

Jon

For NVIDIA check ‘GL_NV_texture_compression_vtc’.

There is no similiar extension on ATI hardware for OpenGL, but Direct3D driver (on my ATI X700)
report about supporting DXT1 - DXT5 formats form Volume Textures.

Interesting, thank you!
I’ve also contacted both NVidia and ATI to see if they’ll respond with information about support for 3D tex compression. I’ll post anything they have to say up here.

Cheers
Jon

Have a peek at sections 3.8.1 and 3.8.3 in the the 2.1 spec.

Thanks I will.

Though - that would only detail OpenGL’s response to the calls, yes ? My understanding is that OpenGL will silently replicate missing driver functionality in software, which would be s-l-o-w.

Jon

Just thought you might want an update.

ATI have so far fobbed me off with ‘read the product briefs’, which of course dont contain the info. Am waiting a second response from them.

NVidia on the other hand came back with, quote:

Hello,

Thank you for contacting NVIDIA Customer Care.

I understand from your email, that you want to know the graphics cards which supports 3D Compression.

I suggest that you use any of the Geforce 7 series of graphics card, depending on the expansion slot on your motherboard.

For further information regarding the cards, please visit the following link:
http://www.nvidia.com/page/geforce7.html

Please feel free to contact us, if you have any further questions.

Originally posted by Jon Mc Jon:
[b] Thanks I will.

Though - that would only detail OpenGL’s response to the calls, yes ? My understanding is that OpenGL will silently replicate missing driver functionality in software, which would be s-l-o-w.

Jon [/b]
This is a texture internal format, so the driver might actually store it uncompressed. There was another thread about DXT and 3D textures. Someone said there is a 3D version of DXT compression or I may have misread.
The nVidia method is to compress 3D blocks which is probably the best solution.

NVidia holding all the aces so far.

It would be a pity to have to resort to D3D to get hold of these capabilities. But both ATI and NVidia state in their specs (once you get past all the stuff to appease m$), ‘Fully OpenGL 2 compliant’ (paraphrasing).

“OpenGL compliant” doesn’t mean anything in this case, since the core spec as of OpenGL 2.1 does not declare any specific compressed formats, and allows the driver to fall back to the uncompressed base format for any reason whatsoever.

Starting with OpenGL 1.3, you can query NUM_COMPRESSED_TEXTURE_FORMATS for the number of supported formats, followed by a query of COMPRESSED_TEXTURE_FORMATS for the actual format(s).

On my NV6800, for example, the number of formats returned is 3, and the formats themselves are
COMPRESSED_RGB_S3TC_DXT1_EXT
COMPRESSED_RGBA_S3TC_DXT3_EXT
COMPRESSED_RGBA_S3TC_DXT5_EXT
(Note that COMPRESSED_RGBA_S3TC_DXT1_EXT is missing from the list.)

The NV_texture_compression_vtc extension was written against the 1.2.1 spec, before compressed textures were added to the core. So it seems to me it’s not really a question of whether compression is supported but, as Arekkusu pointed out, whether the particular formats of interest are. When you supply a generic format (spec, table 3.17, page 155), however, the GL is pretty much free to match it internally however it sees fit (though I’m sure it’ll almost always do the right thing).

That’s brilliant Minstrel, thank you!

Those particular formats are 2D-only though, aren’t they ?
I’ll code up queries for the cards I have access to and see what comes back.

Jon

Yay, got a reply back from ATI.
Yes, 3DC compression is supported.

The example they gave was for D3D but I’m sure its hackable from OpenGL somehow.

Url:
http://www.ati.com/developer/samples/dx9/3dcnormalcompression.html

Jon

Originally posted by Jon Mc Jon:
[b] Yay, got a reply back from ATI.
Yes, 3DC compression is supported.

The example they gave was for D3D but I’m sure its hackable from OpenGL somehow.

Url:
http://www.ati.com/developer/samples/dx9/3dcnormalcompression.html

Jon [/b]
3DC normal compression isn’t 3D texture compression.

NVidia do indeed hold all the aces on this one, unless ATI can come back and tell you a proper answer to your question.

I first tested out 3D texture compression on the Geforce 6x series hardware and it worked fine, albiet with quite noticably lower visual quality. This is the same problem for all GPU compression formats. You have the tradeoff - spatial resolution vs colour quality.

Robert.

You could try calling GetTexLevelParameteri with TEXTURE_COMPRESSED to see if the image was indeed compressed (or perhaps use a proxy to detect supported target/format combos).

Also, for best quality, you may want to try a glHint with TEXTURE_COMPRESSION_HINT and NICEST.

Thanks guys, good stuff.
And yes I realized just after I posted that: “hang on…normal compression??”.
Maybe we could start another thread about people’s experiences dealing with hardware manufacturers and trying to extract tech.info from them. :slight_smile:

I noted that some earlier efforts in volume rendering also reported getting better visual results from 2D stacks than from overt 3D textures, which is interesting.

Jon

Gee its funny revisiting this thread after a couple of years.

And this argument is STILL raging but now its in the public view.