Независимая от заказа прозрачность
Независимая от порядка прозрачность (OIT) — это класс методов растеризации компьютерной графики для рендеринга прозрачности в 3D-сцене, которые не требуют рендеринга геометрии в отсортированном порядке для альфа-композиции .
Описание
[ редактировать ]Обычно трехмерная геометрия с прозрачностью визуализируется путем смешивания (с использованием альфа-композиции ) всех поверхностей в один буфер (представьте себе это как холст). Каждая поверхность перекрывает существующий цвет и добавляет часть своего собственного цвета в зависимости от значения альфа , коэффициента пропускания света . Порядок смешивания поверхностей влияет на общую окклюзию или видимость каждой поверхности. Для получения правильного результата поверхности должны быть смешаны от самой дальней к ближайшей или от ближайшей к самой дальней, в зависимости от операции альфа-композиции , больше или меньше . Упорядочение может быть достигнуто путем рендеринга геометрии в отсортированном порядке, например, сортируя треугольники по глубине, но это может занять значительное количество времени. не всегда дают решение (в случае пересекающейся или круговой перекрытия геометрии) и реализация сложна. Вместо этого независимая от порядка прозрачность сортирует геометрию попиксельно после растеризации. Для получения точных результатов необходимо сохранить все фрагменты перед сортировкой и композицией.
История
[ редактировать ]A -буфер — это метод компьютерной графики, представленный в 1984 году, который сохраняет попиксельные списки данных фрагментов (включая информацию о микрополигонах ) в программном растеризаторе REYES , первоначально разработанном для сглаживания, но также поддерживающем прозрачность.
В последнее время глубокий пилинг [1] в 2001 году описал метод OIT с аппаратным ускорением. Из-за ограничений графического оборудования геометрию сцены приходилось визуализировать много раз. Для улучшения производительности глубинного очищения был предложен ряд методов, все еще с ограничением многопроходного рендеринга. Например, «Двухглубинный пилинг» (2008 г.). [2]
В 2009 году в аппаратное обеспечение/драйверы/графические API графического процессора были введены две важные функции, которые позволили захватывать и сохранение данных фрагмента за один проход рендеринга сцены, что ранее было невозможно. Это возможность записи в произвольную память графического процессора из шейдеров и атомарных операций. Благодаря этим функциям новый класс стало возможным использование методов OIT, не требующих большого количества проходов рендеринга геометрии сцены.
- Первый заключался в хранении данных фрагмента в 3D-массиве. [3] где фрагменты хранятся по измерению z для каждого пикселя x/y . сцены На практике большая часть 3D-массива не используется или переполнена, поскольку сложность глубины обычно неравномерна. Чтобы избежать переполнения 3D-массива, требуется большой объем памяти, что во многих случаях нецелесообразно.
- Существуют два подхода к уменьшению этих затрат памяти.
- Упаковка 3D-массива с помощью сканирования суммы префиксов или линеаризации , [4] устранена проблема с неиспользуемой памятью, но требуется дополнительный этап вычисления сложности глубины для рендеринга геометрии. , S-буфер с учетом разреженности динамический буфер фрагментов, [5] «дек» D-буфер [ нужна ссылка ] , Линеаризованный многослойный буфер фрагментов [6] все данные фрагментов пакета со сканированием суммы префиксов и демонстрируются с помощью OIT.
- Хранение фрагментов в попиксельных связанных списках [7] обеспечивает плотную упаковку этих данных, а в конце 2011 года улучшения драйверов уменьшили накладные расходы на разногласия в атомарных операциях, что сделало этот метод очень конкурентоспособным. [6]
Именно ОИТ
[ редактировать ]Точный, в отличие от приблизительного , OIT точно вычисляет конечный цвет, для которого необходимо отсортировать все фрагменты. В сценах высокой сложности сортировка становится узким местом.
Одной из проблем на этапе сортировки является ограниченное использование локальной памяти , в данном случае атрибут SIMT, относящийся к сокрытию пропускной способности и задержки операций графических процессоров. Обратное распределение памяти [8] (BMA) группирует пиксели по их сложности глубины и сортирует их партиями для улучшения занятости и, следовательно, производительности пикселей с низкой сложностью глубины в контексте сцены потенциально высокой сложности глубины. Сообщается о трехкратном увеличении общей производительности OIT.
Сортировка обычно выполняется в локальном массиве, однако производительность можно повысить еще больше, используя иерархию памяти графического процессора и сортировку по регистрам. [9] аналогично внешней сортировке слиянием , особенно в сочетании с BMA.
Примерный ОИТ
[ редактировать ]Приближенные методы OIT ослабляют ограничения точного рендеринга и обеспечивают более быстрые результаты. Более высокую производительность можно получить, если не хранить все фрагменты или выполнять лишь частичную сортировку геометрии. Ряд методов также сжимает или уменьшает фрагментированные данные. К ним относятся:
- Стохастическая прозрачность: рисуйте в более высоком разрешении с полной непрозрачностью, но отбрасывайте некоторые фрагменты. Тогда понижение разрешения приведет к прозрачности. [10]
- Адаптивная прозрачность, [11] двухпроходный метод, при котором первый создает функцию видимости, которая сжимает на лету (это сжатие позволяет избежать полной сортировки фрагментов), а второй использует эти данные для объединения неупорядоченных фрагментов. Intel Синхронизация пикселей [12] позволяет избежать необходимости хранить все фрагменты, устраняя требования к неограниченной памяти, присущие многим другим методам OIT.
- Взвешенная смешанная независимая от порядка прозрачность заменила оператор над коммутативной аппроксимацией. Ввод информации о глубине в вес создает визуально приемлемую окклюзию. [13]
OIT в аппаратном обеспечении
[ редактировать ]См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Эверитт, Касс (15 мая 2001 г.). «Интерактивная прозрачность, независимая от порядка» . Нвидиа . Архивировано из оригинала 27 сентября 2011 г. Проверено 12 октября 2008 г.
- ^ Бавуаль, Луи (февраль 2008 г.). «Заказать независимую прозрачность с двойной глубиной пилинга» (PDF) . Нвидиа . Проверено 12 марта 2013 г.
- ^ Фан Лю, Мэн-Чэн Хуан, Сюэ-Хуэй Лю и Энь-Хуа Ву. «Однопроходная глубинная очистка с помощью растеризатора CUDA» , в SIGGRAPH 2009: Talks (SIGGRAPH '09), 2009 г.
- ^ Крейг Пипер. «Проход суммы префикса для линеаризации хранилища A-буфера» , заявка на патент, декабрь 2008 г.
- ^ Марилена Мауле, Жоао Л.Д. Комба, Рафаэль Торчелсен и Руй Бастос. «Оптимизированная для памяти прозрачность, независимая от порядка, с динамическим буфером фрагментов» , в журнале «Компьютеры и графика», 2014.
- ^ Jump up to: а б Пьярелал Ноулз, Джефф Лич и Фабио Замбетта. «Глава 20: Эффективные методы многоуровневого буфера фрагментов» , OpenGL Insights, страницы 279–292, редакторы Коцци и Риччио, CRC Press, 2012 г.
- ^ Джейсон С. Янг, Джастин Хенсли, Хольгер Грюн и Николас Тибероз. «Построение параллельного связанного списка в реальном времени на графическом процессоре» , В материалах 21-й конференции Eurographics по рендерингу (EGSR'10), 2010 г.
- ^ Ноулз; и др. (октябрь 2013 г.). «Обратное распределение памяти и улучшенный OIT» (PDF) . Цифровая библиотека Еврографики . Архивировано из оригинала (PDF) 2 марта 2014 г. Проверено 21 января 2014 г.
- ^ Ноулз; и др. (июнь 2014 г.). «Быстрая сортировка для точного OIT сложных сцен» (PDF) . Шпрингер Берлин Гейдельберг . Архивировано из оригинала (PDF) 9 августа 2014 г. Проверено 5 августа 2014 г.
- ^ Эндертон, Эрик (nd). «Стохастическая прозрачность» (PDF) . Транзакции IEEE по визуализации и компьютерной графике . 17 (8). Нвидиа : 1036–1047. дои : 10.1109/TVCG.2010.123 . ПМИД 20921587 . Проверено 12 марта 2013 г.
- ^ Сальви; и др. (18 июля 2013 г.). «Адаптивная прозрачность» . Проверено 21 января 2014 г.
- ^ Дэвис, Ли (18 июля 2013 г.). «Аппроксимация прозрачности, независимая от порядка, с синхронизацией пикселей» . Интел . Проверено 21 января 2014 г.
- ^ Макгуайр, Морган; Бавуаль, Луи (2013). «Взвешенная смешанная прозрачность, независимая от порядка» . Журнал методов компьютерной графики . 2 (2): 122–141.
- ^ «Оптимизация производительности Dreamcast Microsoft Direct3D» . Майкрософт . 1 марта 1999 г.