DemoCoder said:
Ned Greene's heirarchical-z occlusion culling. Wavelet compression of texture data. Geometry compression (not amplification) via stuff like topological surgery, etc. Scenegraph acceleration, using bounding volumes, etc.
OK ... Wavelet compression offers an obvious and compact way to store a mipmap pyramid, but to decompress even one texel, you need to read about 5x5 or so texels from every mipmap level above it, making hardware decompression at texture fetch time surprisingly slow and difficult.
Geometry compression is a subject I probably need to read more about.
I believe I more or less mentioned the other points?
Chalnoth said:
I don't feel immediate-mode tiling necessarily needs to have developer support.
So that you understand what I'm trying to say, what I mean by immediate-mode tiling is simply an architecture that forward-caches geometry in order to do occlusion tests not only on geometry that has already gone through the pixel pipelines, but also on geometry that has yet to go through them (by a reasonable amount...depending on how much geometry is cached).
I'm afraid that I don't understand
- I don't see how this can become 'immediate-mode tiling' - sounds more like a partially-deferred scheme to me, and I don't see the connection to tiling. Care to explain further?
Chalnoth said:
Other than that, there are certainly better ways to compress the frame and z-buffers than what ATI is currently doing (Not based on any special knowledge of ATI's design...more based on the fact that it is an impossibility for the best possible algorithm to have been discovered yet).
Which doesn't preclude the current ATI algorithm from being within, say, 0.1% of the "best possible" algorithm (although I do believe there is a bit more room than that left).... For frame/Z compression, you can always improve the compression ratio by making each block larger, like 16x16 pixels instead of the 8x8 that ATI is currently using. Doing so can increase bandwidth usage substantially, though, due to the fact that every time you touch even one pixel in a block, you need to decompress and recompress the entire block. Also, you can get better compression ratios by using algorithms like Huffman or arithmetic coding on each block - such algorithms will result in very slow reads because the data must be unpacked serially. So in all, there is a tradeoff in block size, algorithm complexity & parallellism, and bandwidth usage - if you have better suggestions than the ATI method, come with them.