Вы можете вывести значение за пределы [0,1], но оно будет зафиксировано в диапазоне [0,1] перед использованием в тесте глубины (если включено) и перед записью в целевой объект глубины. Это верно как для форматов Z16 / Z24 (которые не могут даже представлять значения за пределами [0,1]), так и для формата Z32F.
Почему 24 бита слишком ограничены - вам нужен больший диапазон или вам нужна большая точность?
Ваш вопрос предполагает, что вам нужен больший диапазон, чем [0,1], но ваш граф сцены может использовать любой диапазон, который вы хотите, до тех пор, пока вершинный шейдер отображается в диапазоне [0,1] (это отображение диапазона обычно происходит в модели / вид / проекция трансформируется).
Если вам нужна большая точность, вы не можете получить ее изначально: 32-разрядные числа с плавающей запятой, используемые в API и аппаратном обеспечении, имеют только 23 бита мантиссы, а неявное ведение 1 эффективно дает вам 24 бита точности. Чтобы справиться с этим, типичное решение состоит в том, чтобы разделить мир на сегменты (например, сетку) и сохранить позиции объектов относительно сегмента, в котором они находятся. Когда объект перемещается из одного сегмента в другой, вы переводите его положение в быть по отношению к новому сегменту. При рендеринге используйте сегмент, содержащий камеру, как (0,0,0) и отобразите сегменты, которые попадают в усеченный вид, в диапазон глубины [0,1].