Regarding the specs (http://www.opengl.org/registry/specs/EXT/depth_bounds_test.txt), it has been done (and copyrighted) by nVidia. So why then it is an EXT and not an NV extension ? And even thought, there are several NV extensions supported by my ATI card (haven’t checked but certainly those with no nvidia copyrights I guess).
Does this mean depth bounds tests absolutely can’t be done on ATI ? Are there any similar functionalities/extensions (I haven’t found some).
Thanks for the answer. Yes I was mistaken between copyrights and patents.
When you say an invitation for others to implement it, and since this was done in 2003, I think I will conclude that noone else wanted to implement it. It’s a bit a pitty since I can see here and there on Internet several applications with this functionality.
Of course we can do it ourselves with shaders (it seems quite easy to send some uniform values and check it in the fragment shader) but it also seems this extension, when implemented by a constructor, provides some optimizations a normal shader code can’t afford.
Depth bounds test is supported directly in hardware on all GeForce GPUs in existence from the GeForce FX 5900 onward. It is part of the Z-cull hardware where it can operate at tile granularity and reject fragments at a super-fast rate. It is never implemented by adding instructions to your shader.
On Nvidia’s SM5 hardware, the command buffer register that enables DBT is 0x066F, and the registers that hold the min and max depth bounds are 0x03E7 and 0x03E8.
By making uninformed guesses about how OpenGL features are implemented, you’re not really helping anyone.
I also didn’t say that it wasn’t implemented in hardware. Absence of evidence is not evidence of absence.
Also, there’s no guarantee it will be implemented in future hardware.
In any case, it’s certainly not exposed on any ATI or Intel hardware. So as with everything else, if your needs allow you to use only NVIDIA hardware, then feel free to use this extension. Otherwise, you’ll have to do it with opcodes.
This is what makes the lack of this extension on other IHV graphic cards very pity. If one wants to perform this, she either has to do it all in the shaders, and forgets about this extension, or make two different sets of shaders (or do some kind of ubershaders…).