Rough idea on maximum 3D texture size

Started by
3 comments, last by Nik02 6 years, 7 months ago

Now I know this is dependent on the PC to a big extent but I've been out of the loop with modern hardware for a few years. I have a project where a large 3D texture might solve things, we're talking maybe 512^3 but probably 8-bit, single channel. Memory wise this is not a big deal (it's not a game project and there are not lots of models or textures in use) but I really don't know if it would be supported on a typical PC (not a games rig). Or if it would slow things to a crawl... or once it's in the GPU memory it would not be unduly performance-limiting?

 

Advertisement

the maximum size of a 3D texture in D3D11 hardware must  is 2048 (on all axis, so total maximum resolution can be 2048*2048*2048). so yes, it is supported on virtually every hardware out there. Performance wise there shouldn't be a difference that a 2D texture

Under OpenGL, this limit is defined by querying GL_MAX_3D_TEXTURE_SIZE. Also, as stated here, try to stick with POT texture sizes as much as possible.

To my opinion, the API will never give a size that, when used, will make the texture unpracticable (ie, too slow to be rendered or to be probed in a shader).

512^3 is 128MB with 8-bit texels, so it reasonably fits into GPU memory on modern hardware.

2048^3 is 8GB which does not fit into on-board memory of common gaming GPUs. It does fit into professional (as in Quadro) cards, but even in professional applications it is rare that such large individual buffers would be used.

Note that the memory access is relatively much slower than shader arithmetic, if compared to 5-10 years ago. This is because memory bus width cannot be easily scaled up, but the number of shader cores has increased quite a bit. Whereas in the old days something would run better from a 3d lookup table, the same logic could now run much faster by just running the math on the shader. Depends on the program, of course.

Niko Suni

This topic is closed to new replies.

Advertisement