Компьютерные графические технологии
Независимая от порядка прозрачность (OIT) — это класс методов в растровой компьютерной графике для рендеринга прозрачности в трехмерной сцене, которые не требуют рендеринга геометрии в отсортированном порядке для альфа-композиции .
Описание
Обычно 3D-геометрия с прозрачностью визуализируется путем смешивания (с использованием альфа-композиции ) всех поверхностей в один буфер (представьте себе холст). Каждая поверхность закрывает существующий цвет и добавляет немного своего собственного цвета в зависимости от своего альфа- значения, коэффициента пропускания света . Порядок, в котором смешиваются поверхности, влияет на общую окклюзию или видимость каждой поверхности. Для получения правильного результата поверхности должны быть смешаны от самой дальней к ближайшей или от самой дальней к самой дальней, в зависимости от операции альфа-композиции , над или под . Упорядочение может быть достигнуто путем визуализации геометрии в отсортированном порядке, например, сортировки треугольников по глубине, но может занять значительное количество времени, не всегда дает решение (в случае пересекающейся или круговой перекрывающейся геометрии), и реализация сложна. Вместо этого независимая от порядка прозрачность сортирует геометрию попиксельно после растеризации. Для получения точных результатов это требует сохранения всех фрагментов перед сортировкой и композицией.
История
A -буфер — это технология компьютерной графики, представленная в 1984 году, которая позволяет хранить попиксельные списки фрагментных данных (включая информацию о микрополигонах ) в программном растеризаторе REYES , изначально разработанном для сглаживания , но также поддерживающем прозрачность.
Совсем недавно, в 2001 году, deep peeling [1] описал аппаратно-ускоренную технику OIT. С ограничениями в графическом оборудовании геометрия сцены должна была визуализироваться много раз. Затем последовало несколько техник, чтобы улучшить производительность deep peeling, все еще с ограничением многопроходного рендеринга. Например, Dual Depth Peeling (2008). [2]
В 2009 году в аппаратном обеспечении/драйверах/графических API ГП появились две важные функции, которые позволили захватывать и сохранять фрагментные данные за один проход рендеринга сцены, что ранее было невозможно. Это возможность записи в произвольную память ГП из шейдеров и атомарных операций. Благодаря этим функциям стал возможен новый класс методов OIT, не требующих множества проходов рендеринга геометрии сцены.
- Первый способ заключался в хранении фрагментных данных в 3D-массиве, [3] где фрагменты хранятся вдоль измерения z для каждого пикселя x/y . На практике большая часть 3D-массива не используется или переполняется, поскольку глубина сложности сцены обычно неравномерна. Чтобы избежать переполнения, 3D-массиву требуются большие объемы памяти, что во многих случаях непрактично.
- Существуют два подхода к сокращению затрат памяти.
- Упаковка 3D-массива с помощью сканирования суммы префикса или линеаризации [ 4] устранила проблему неиспользуемой памяти, но требует дополнительного прохода рендеринга глубинной сложности вычислений геометрии. S-буфер «Sparsity-aware» , динамический буфер фрагментов [5] , D-буфер «deque» [ требуется ссылка ] , линеаризованный многослойный буфер фрагментов [6] — все они упаковывают данные фрагментов с помощью сканирования суммы префикса и демонстрируются с помощью OIT.
- Хранение фрагментов в связанных списках попиксельно [7] обеспечивает плотную упаковку этих данных, а в конце 2011 года усовершенствования драйверов снизили накладные расходы на атомарные операции, что сделало эту технику весьма конкурентоспособной. [6]
Точный ОИТ
Точный, в отличие от приблизительного, OIT точно вычисляет конечный цвет, для которого все фрагменты должны быть отсортированы. Для сцен с высокой глубиной сложности сортировка становится узким местом.
Одной из проблем этапа сортировки является ограниченная занятость локальной памяти , в данном случае атрибут SIMT , связанный с пропускной способностью и скрытием задержки работы графических процессоров. Обратное распределение памяти [8] (BMA) группирует пиксели по их глубинной сложности и сортирует их партиями для улучшения занятости и, следовательно, производительности пикселей с низкой глубинной сложностью в контексте сцены с потенциально высокой глубинной сложностью. Сообщается о трехкратном увеличении общей производительности OIT.
Сортировка обычно выполняется в локальном массиве, однако производительность можно повысить еще больше, используя иерархию памяти графического процессора и сортировку в регистрах [9] , аналогично внешней сортировке слиянием , особенно в сочетании с BMA.
Приблизительный OIT
Приближенные методы OIT ослабляют ограничение точного рендеринга, чтобы обеспечить более быстрые результаты. Более высокая производительность может быть достигнута за счет отсутствия необходимости хранить все фрагменты или только частично сортировать геометрию. Ряд методов также сжимают или уменьшают данные фрагментов. К ним относятся:
- Стохастическая прозрачность: рисуйте в более высоком разрешении при полной непрозрачности, но отбрасывайте некоторые фрагменты. Затем понижение дискретизации даст прозрачность. [10]
- Адаптивная прозрачность [11] — двухпроходная технология, в которой первая создает функцию видимости, которая сжимает на лету (такое сжатие позволяет избежать необходимости полной сортировки фрагментов), а вторая использует эти данные для составления неупорядоченных фрагментов. Синхронизация пикселей Intel [12] позволяет избежать необходимости хранить все фрагменты, устраняя потребность в неограниченной памяти, характерную для многих других технологий OIT.
- Взвешенная смешанная порядково-независимая прозрачность заменила оператор over на коммутативное приближение. Ввод информации о глубине в вес создает визуально приемлемую окклюзию. [13]
OIT в аппаратном обеспечении
- Игровая консоль Sega Dreamcast включала аппаратную поддержку автоматического OIT. [14]
Смотрите также
Ссылки
- ^ Эверитт, Касс (2001-05-15). "Интерактивная порядково-независимая прозрачность". Nvidia . Архивировано из оригинала 2011-09-27 . Получено 2008-10-12 .
- ^ Бавойл, Луи (февраль 2008 г.). "Независимая прозрачность с двойной глубиной отслоения" (PDF) . Nvidia . Получено 12.03.2013 .
- ^ Фан Лю, Мэн-Чэн Хуан, Сюэ-Хуэй Лю и Эн-Хуа Ву. «Однопроходное глубинное шелушение с помощью растеризатора CUDA», в SIGGRAPH 2009: Доклады (SIGGRAPH '09), 2009
- ^ Крейг Пипер. «Проход префиксной суммы для линеаризации хранилища A-буфера», Заявка на патент, декабрь 2008 г.
- ^ Марилена Мауле и Жуан Л. Д. Комба и Рафаэль Торчельсен и Руи Бастос. «Оптимизированная для памяти порядково-независимая прозрачность с динамическим буфером фрагментов», в Computers & Graphics, 2014.
- ^ ab Pyarelal Knowles, Geoff Leach и Fabio Zambetta. "Глава 20: Эффективные методы многослойного буфера фрагментов", OpenGL Insights, страницы 279-292, редакторы Cozzi и Riccio, CRC Press, 2012
- ^ Джейсон С. Янг, Джастин Хенсли, Хольгер Грюн и Николас Тибьерос. «Концептуальное построение связанных списков в реальном времени на GPU», в трудах 21-й конференции Eurographics по рендерингу (EGSR'10), 2010 г.
- ^ Knowles; et al. (октябрь 2013 г.). "Backwards Memory Allocation and Improved OIT" (PDF) . Eurographics Digital Library. Архивировано из оригинала (PDF) 2014-03-02 . Получено 2014-01-21 .
- ^ Knowles; et al. (Июнь 2014). "Быстрая сортировка для точного OIT сложных сцен" (PDF) . Springer Berlin Heidelberg . Архивировано из оригинала (PDF) 2014-08-09 . Получено 2014-08-05 .
- ^ Эндертон, Эрик (nd). «Стохастическая прозрачность» (PDF) . Труды IEEE по визуализации и компьютерной графике . 17 (8). Nvidia : 1036–1047. doi :10.1109/TVCG.2010.123. PMID 20921587 . Получено 12.03.2013 .
- ^ Salvi; et al. (2013-07-18). "Адаптивная прозрачность" . Получено 2014-01-21 .
- ^ Дэвис, Ли (2013-07-18). «Порядково-независимая аппроксимация прозрачности с синхронизацией пикселей». Intel . Получено 2014-01-21 .
- ^ МакГвайр, Морган; Бавойл, Луис (2013). «Взвешенная смешанная порядково-независимая прозрачность». Журнал компьютерных графических технологий . 2 (2): 122–141.
- ^ "Оптимизация производительности Dreamcast Microsoft Direct3D". Microsoft . 1999-03-01.