Нерегулярный Z-буфер - Irregular Z-buffer
В нерегулярный Z-буфер алгоритм, предназначенный для решения проблема видимости в трехмерной компьютерной графике в реальном времени. Это связано с классическим Z-буфер в том, что он поддерживает значение глубины для каждого образца изображения и использует его для определения видимых геометрических элементов сцены. Однако ключевое различие между классическим Z-буфером и нерегулярным Z-буфером заключается в том, что последний позволяет произвольно размещать образцы изображений в плоскость изображения, тогда как в первом случае образцы должны быть расположены в виде регулярной сетки.
Эти выборки глубины явно хранятся в двумерной пространственной структуре данных. В течение растеризация, треугольники проецируются на плоскость изображения, как обычно, и запрашивается структура данных, чтобы определить, какие образцы перекрывают каждый проецируемый треугольник. Наконец, для каждой перекрывающейся выборки выполняется стандартное Z-сравнение и (условное) обновление кадрового буфера.
Выполнение
Классический алгоритм растеризации проецирует каждый многоугольник на плоскость изображения и определяет, какие точки выборки из регулярно разнесенного набора лежат внутри проецируемого многоугольника. Поскольку расположение этих выборок (то есть пикселей) неявно, это определение может быть сделано путем тестирования краев по неявной сетке точек выборки. Однако, если местоположения точек выборки расположены неравномерно и не могут быть вычислены по формуле, то этот подход не работает. Нерегулярный Z-буфер решает эту проблему, явно сохраняя местоположения образцов в двумерном пространственном структура данных, а затем запрос этой структуры, чтобы определить, какие образцы лежат внутри спроецированного треугольника. Этот последний шаг называется «нерегулярной растеризацией».
Хотя конкретная используемая структура данных может варьироваться от реализации к реализации, два изученных подхода: kd-дерево, и сетка связанных списков. Преимущество сбалансированной реализации kd-дерева состоит в том, что она гарантирует доступ O (log (N)). Его главный недостаток состоит в том, что параллельное построение kd-дерева может быть затруднительным, а обход требует дорогостоящих инструкций перехода. Сетка списков имеет то преимущество, что ее можно более эффективно реализовать на GPU аппаратное обеспечение, который предназначен в первую очередь для классического Z-буфера.
С появлением CUDA, возможность программирования современного графического оборудования была значительно улучшена. Магистерская диссертация «Быстрая растеризация треугольников с использованием нестандартного Z-буфера на CUDA» (см. «Внешние ссылки») предоставляет полное описание программной реализации отображения теней на основе нерегулярного Z-буфера на CUDA. Система рендеринга полностью работает на графических процессорах. Он способен генерировать тени без наложения спектров со скоростью в десятки миллионов треугольников в секунду.
Приложения
Нерегулярный Z-буфер может использоваться для любого приложения, которое требует вычислений видимости в произвольных местах на плоскости изображения. Было показано, что он особенно искусен в отображение теней, алгоритм пространства изображения для визуализации жестких теней. Помимо рендеринга теней, потенциальные приложения включают адаптивную сглаживание, дрожание выборки и отображение окружающей среды.