Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Важность порядка смешивания. Верхняя часть дает неправильный результат с неупорядоченным альфа-смешиванием, а нижняя часть правильно сортирует геометрию. Обратите внимание на меньшую видимость структуры скелета без правильного порядка глубины. Изображение из демонстрации ATI Mecha

Независимая от порядка прозрачность (OIT) - это класс методов растеризации компьютерной графики для рендеринга прозрачности в 3D-сцене, которые не требуют рендеринга геометрии в отсортированном порядке для альфа-компоновки .

Описание [ править ]

Обычно трехмерная геометрия с прозрачностью визуализируется путем смешивания (с использованием альфа-композиции ) всех поверхностей в один буфер ( воспринимайте это как холст). Каждая поверхность перекрывает существующий цвет и добавляет свой собственный цвет в зависимости от своего альфа- значения, коэффициента пропускания света . Порядок совмещения поверхностей влияет на общую окклюзию или видимость каждой поверхности. Для получения правильного результата поверхности должны быть смешаны от самого дальнего к ближайшему или от ближайшего к самому дальнему, в зависимости от операции альфа-композитинга , сверху или снизу.. Упорядочение может быть достигнуто путем рендеринга геометрии в отсортированном порядке, например сортировки треугольников по глубине, но это может занять значительное количество времени, не всегда приводит к решению (в случае пересекающейся или круговой перекрывающейся геометрии), а реализация является сложной. Вместо этого прозрачность, не зависящая от порядка, сортирует геометрию по пикселям после растеризации. Для получения точных результатов необходимо сохранить все фрагменты перед сортировкой и компоновкой.

История [ править ]

А-буфер является компьютерной графикой техники введен в 1984 году , который хранит в пикселе списки данных фрагментов ( в том числе микро-полигон информации) в программном rasteriser, РЕЙС , изначально предназначенные для сглаживания , но также поддерживает прозрачность.

Совсем недавно глубинный пилинг [1] в 2001 году описал методику OIT с аппаратным ускорением. Из-за ограничений в графическом оборудовании геометрию сцены приходилось отрисовывать много раз. Был применен ряд методов для улучшения производительности пилинга по глубине, все еще с ограничением многопроходного рендеринга. Например, Dual Depth Peeling (2008). [2]

В 2009 году в аппаратном обеспечении / драйверах / графических API-интерфейсах графического процессора были представлены две важные функции, которые позволили захватывать и сохранять данные фрагментов за один проход рендеринга сцены, что ранее было невозможно. Это возможность записи в произвольную память графического процессора из шейдеров и атомарных операций. Благодаря этим функциям стал возможен новый класс методов OIT, которые не требуют большого количества проходов рендеринга геометрии сцены.

  • Первая заключалась в хранении данных фрагментов в трехмерном массиве [3], где фрагменты сохранялись по оси z для каждого пикселя x / y . На практике большая часть 3D-массива не используется или переполняется, поскольку сложность глубины сцены обычно неравномерна. Чтобы избежать переполнения, 3D-массив требует большого количества памяти, что во многих случаях непрактично.
  • Существуют два подхода к уменьшению этих накладных расходов на память.
    1. Упаковка 3D - массив с суммой сканирования префикса или линеаризации , [4] удален неиспользованный вопрос памяти , но требует дополнительной глубины сложности вычислений рендеринга проход геометрии. «Разреженный-известно» S-буфер, динамический фрагмент буфер, [5] «Deque» Д-буфер [ править ] , Линеаризованный Слоистый Фрагмент буфер [6] Все данных фрагмента пакета с разверткой префикса суммы и демонстрируется с ОИТЕ.
    2. Хранение фрагментов в попиксельных связанных списках [7] обеспечивает плотную упаковку этих данных, а в конце 2011 года усовершенствования драйверов снизили накладные расходы на выполнение атомарных операций, что сделало этот метод очень конкурентоспособным. [6]

Точный OIT [ править ]

Точный, а не приблизительный , OIT точно вычисляет окончательный цвет, для которого необходимо отсортировать все фрагменты. Для сцен с высокой степенью сложности сортировка становится узким местом.

Одной из проблем на этапе сортировки является ограниченная занятость локальной памяти , в данном случае атрибут SIMT, относящийся к пропускной способности и сокрытию задержки операции графических процессоров. Распределение памяти в обратном направлении [8] (BMA) группирует пиксели по их сложности глубины и сортирует их партиями, чтобы улучшить занятость и, следовательно, производительность пикселей с низкой глубиной сложности в контексте сцены с потенциально высокой глубиной сложности. Сообщается о 3-кратном общем увеличении производительности OIT.

Сортировка обычно выполняется в локальном массиве, однако производительность может быть дополнительно улучшена за счет использования иерархии памяти графического процессора и сортировки в регистрах [9] аналогично внешней сортировке слиянием , особенно в сочетании с BMA.

Приблизительный OIT [ править ]

Приблизительные методы OIT ослабляют ограничение точного рендеринга, чтобы обеспечить более быстрые результаты. Более высокая производительность может быть достигнута за счет отсутствия необходимости хранить все фрагменты или лишь частичной сортировки геометрии. Ряд методов также сжимают или сокращают данные фрагмента. Это включает:

  • Стохастическая прозрачность: рисуйте с более высоким разрешением при полной непрозрачности, но отбрасывайте некоторые фрагменты. Понижение частоты дискретизации тогда даст прозрачность. [10]
  • Адаптивная прозрачность [11] - двухпроходный метод, в котором первый создает функцию видимости, которая сжимается на лету (это сжатие позволяет избежать полной сортировки фрагментов), а второй использует эти данные для составления неупорядоченных фрагментов. Синхронизация пикселей Intel [12] позволяет избежать необходимости хранить все фрагменты, устраняя неограниченные требования к памяти для многих других методов OIT.

OIT in Hardware [ править ]

  • Игровая консоль Sega Dreamcast включает аппаратную поддержку автоматического OIT. [13]

См. Также [ править ]

  • Альфа-композитинг
  • Прозрачность (графика)
  • Альфа к покрытию

Ссылки [ править ]

  1. ^ Everitt, Кассы (2001-05-15). «Интерактивная прозрачность, не зависящая от порядка» . Nvidia . Архивировано из оригинала на 2011-09-27 . Проверено 12 октября 2008 .
  2. ^ Bavoil Луи (февраль 2008). «Заказ независимой прозрачности с двойной глубиной отслаивания» (PDF) . Nvidia . Проверено 12 марта 2013 .
  3. Фан Лю, Мэн-Чэн Хуан, Сюэ-Хуэй Лю и Эн-Хуа Ву. «Пилинг глубины за один проход с помощью растеризатора CUDA» , В SIGGRAPH 2009: Talks (SIGGRAPH '09), 2009
  4. ^ Крейг Пипер. «Передача суммы префикса для линеаризации хранилища A-буфера» , заявка на патент, декабрь 2008 г.
  5. ^ Марилена Мауле и Жоао Л.Д. Комба и Рафаэль Торчелсен и Руи Бастос. «Оптимизированная для памяти прозрачность, независимая от порядка, с динамическим буфером фрагментов» , In Computers & Graphics, 2014.
  6. ^ a b Пьярелал Ноулз, Джефф Лич и Фабио Замбетта. «Глава 20: Эффективные методы многоуровневого буфера фрагментов» , OpenGL Insights, страницы 279–292, редакторы Коззи и Риччио, CRC Press, 2012 г.
  7. ^ Джейсон С. Янг, Джастин Хенсли, Хольгер Грюн и Николас Тибьероз. «Конструирование параллельных связанных списков в реальном времени на GPU» , В материалах 21-й конференции Eurographics по рендерингу (EGSR'10), 2010 г.
  8. ^ Ноулз; и другие. (Октябрь 2013 г.). «Обратное распределение памяти и улучшенный OIT» (PDF) . Электронная библиотека Eurographics . Архивировано из оригинального (PDF) 02 марта 2014 года . Проверено 21 января 2014 .
  9. ^ Ноулз; и другие. (Июнь 2014 г.). «Быстрая сортировка для точной OIT сложных сцен» (PDF) . Springer Berlin Heidelberg . Архивировано из оригинального (PDF) 09.08.2014 . Проверено 5 августа 2014 .
  10. ^ Эндертон, Эрик (nd). «Стохастическая прозрачность» (PDF) . Nvidia . Проверено 12 марта 2013 .
  11. ^ Сальви; и другие. (2013-07-18). «Адаптивная прозрачность» . Проверено 21 января 2014 .
  12. ^ Дэвис, Ли (2013-07-18). «Аппроксимация прозрачности, не зависящая от порядка, с пиксельной синхронизацией» . Intel . Проверено 21 января 2014 .
  13. ^ «Оптимизация производительности Dreamcast Microsoft Direct3D» . Microsoft . 1999-03-01.