Metal API: повышение точности буфера глубины

#ios #precision #metal #depth-buffer #depth-testing

#iOS #точность #Металлические #буфер глубины #тестирование глубины

Вопрос:

Какие опции предлагает Metal API для повышения точности буфера глубины, особенно для объектов, которые находятся дальше?

Я обнаружил, что даже при том, что значение nearZ установлено неудобно далеко от камеры, а значение farZ установлено неудобно близко, между соседними полигонами все еще существует значительное количество z-битв. Точность буфера глубины кажется фантастической для объектов, которые находятся близко к камере, но действительно паршивой для объектов, которые находятся дальше.

В этой статье предлагается несколько отличных решений проблемы, но все примеры кода ориентированы на OpenGL и DirectX.

Как можно реализовать одно из этих решений (т. Е. логарифмический буфер глубины) с использованием Metal API и / или металлических шейдеров?

Комментарии:

1. Согласно Metal by Example, metalbyexample.com/up-and-running-3 ) Буфер глубины металла представляет собой логарифмическую функцию глубины пикселя от 0 до 1 между ближней и дальней плоскостями отсечения. Я не смог самостоятельно проверить это через документацию разработчика. Если это правильно, вы получаете логарифмический буфер глубины по умолчанию. Возможно, вы захотите спросить о конкретных проблемах также на форумах разработчиков Apple для metal.

2. Знаете ли вы, какая разрядность у вашего буфера глубины. Если вы используете 16-битный буфер глубины, то у вас может быть низкая точность. 24-битная глубина подходит для большинства вариантов использования.

3. @Columbo Я использую буфер глубины с 32-разрядными числами с плавающей точкой (MTLPixelFormatDepth32Float).

4. Можете ли вы определить, насколько близко эти объекты находятся в мировом пространстве? Возможно ли, что они не просто близки, но и фактически совпадают (вплоть до любой применимой точности с плавающей запятой, и в этом случае большая точность буфера глубины вам не поможет)? Если вы можете поделиться изображением или видео проблемы, это может помочь нам предложить решения.