Иерархический Z-буфер для отбора окклюзии

Я читаю раздел Occlusion Culling в Real-time Rendering 3rd Edition, и я не мог понять, как это работает. Некоторые вопросы:

  1. Как влияет наличие Z-пирамиды? Зачем нам нужно несколько разрешений Z-буфера? В книге это отображается следующим образом (левая сторона): введите описание изображения здесь

  2. Является ли структура Octree той же самой Octree, которая используется для общего отбора и рендеринга усеченного конуса? Или это специализированный Octree, созданный специально для техники отбора окклюзии?

  3. Более общий вопрос: в предыдущем разделе (а также здесь) термин "запрос окклюзии" описывается как "рендеринг упрощенного ограничивающего объема объекта и сравнение его результатов глубины с Z-буфером, возвращая количество пикселей, которые являются видимый ". Какие функции в OpenGL связаны с этой концепцией Occlusion Query?

  4. Является ли этот метод стандартом для отбора окклюзии в играх с открытым миром?

0 ответов

  1. Иерархический Z-буфер полезен в ситуациях, когда большие близлежащие объекты могут перекрывать множество более мелких объектов. Примером может служить визуализация внутренней части здания или горного ландшафта.

    Когда визуализируется близлежащий объект, он устанавливает пиксель где-нибудь на более низком уровне разрешения Z-буферной пирамиды на значение, близкое к глубине. Когда визуализируется объект меньшего размера, его ограничивающий прямоугольник можно сначала проверить по этому пикселю и отбраковать целиком.

  2. Да. Это те же октреи. Но это не обязательно должно быть октри. Любая иерархическая структура данных пространственного индексирования будет работать как для иерархического Z-буфера, так и для выбора усеченного конуса.

    Чтобы извлечь выгоду из иерархического Z-буфера, нам нужно визуализировать пейзаж, начиная с ближайших объектов. Для этого можно использовать такие приемы, как октреи или BSP.

    Кроме того, наличие октри под рукой позволяет отбирать целые ветви дерева на основе расстояния до их bbox, а не отдельных объектов или треугольников.

  3. Часть OpenGL, которая отвечает за запросы окклюзии: glBeginQuery, glEndQuery а также glGetQueryObject, Смотрите Query Objects для деталей.

  4. Иерархические Z-буферы были реализованы аппаратно на некоторых ранних Radeon. Однако я не слышал об этом в настоящее время.

    Запросы окклюзии, с другой стороны, обычно используются. Они, по сути, дают аналогичные преимущества.

Другие вопросы по тегам