Жесткие ограничивающие рамки для вокселов и кирпичей в лучевой индикатор поля со знаком расстояния

Авторы: H. Hansson-Söderlund, T. Akenine-Möller

Источник: H. Hansson-Söderlund Tight Bounding Boxes for Voxels and Bricks in a Signed Distance Field Ray Tracer / H. Hansson-Söderlund, T. Akenine-Möller // EUROGRAPHICS 2023.

Аннотация: Мы представляем простые методы вычисления жестких ограничивающих рамок, выровненных по оси, для вокселов и для блоков вокселов в средстве визуализации функции расстояния со знаком, основанном на трассировке лучей. Наши результаты показывают общее сокращение времени кадра на 20-31% при трассировке траектории в реальном времени.

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

Кубы, обведенные черным, представляют экстенты вокселей
Рисунок 1: Кубы, обведенные черным, представляют экстенты вокселей, а синие области - поверхности с трехлинейной интерполяцией внутри вокселей. С помощью нашего нового метода вычисления жестких ограничивающих рамок (показан красным) мы измерили существенное улучшение производительности трассировки лучей в сетках полей расстояний со знаком.

Концепции CCS

  • Вычислительные методологии → Трассировка лучей
  • Вычислительные методологии → Объемные модели

Введение

Функции расстояния со знаком (SDF) могут использоваться для моделирования впечатляющих сцен с простыми геометрическими объектами в качестве строительных блоков и использованием над ними операторов, таких как объединение, пересечение, плавное вычитание и плавное объединение. В нескольких играх широко использовались SDF, например, Claybook и Dreams, но SDF также используются в игровых движках, таких как Unreal Engine, для ускорения рендеринга. В этой короткой статье мы сосредоточимся на ускорении трассировки лучей сетки SDF, которая состоит из набора вокселов с трехлинейно интерполированной поверхностью в каждом.

В одном вокселе со знаковыми значениями расстояния 2×2×2, sijk с i, j, k ∈ {0,1}, стандартное уравнение для трилинейной интерполяции имеет вид:

f(x,y,z) = (1-z)((1-y)((1-x)s000 + xs100) + y((1-x)s010+xs110))+z((1-y)((1-x)s001 + xs101) + y((1-x)s011+xs111))

где x, y, z ∈ [0,1]. Обратите внимание, что поверхность f(x, y, z) = 0, которая является полиномом третьего порядка, внутри вокселя чаще всего является желаемой, как видно на рисунке 2.

3D воксел со знаковыми расстояниями
Рисунок 2: Трехмерный воксел со знаковыми расстояниями sijk в углах вокселя 2×2×2. Возможная поверхность, образованная трехлинейной интерполяцией расстояний со знаком sijk, показана синим цветом.

В недавнем методе трассировки лучей SDF-сеток экстенты вокселей использовались в качестве границы для одного вокселя или блока вокселей, например, в структурах данных sparse voxel set (SVS) и sparse brick set (SBS) соответственно. Уменьшение размера ограничивающего объема (BV) является важной оптимизацией производительности, поскольку количество лучей, которые могут его пересекать, примерно пропорционально площади поверхности BV. Мы представляем два улучшения по сравнению с предыдущей работой.

Первый - это новый метод вычисления ограниченной рамки, выровненной по оси (AABB), только вокруг экстентов поверхности внутри вокселя (см. Рисунок 1). Второй способ заключается в вычислении плотного прямоугольника вокруг поверхности внутри кирпича, где кирпич представляет собой группу, например, из 7³ вокселов. Наши результаты показывают значительное повышение производительности.

Вычисление воксельного блока

Поскольку поверхность в уравнении 1 расположена в [0,1]³, мы стремимся вычислить жесткую ограничивающую рамку, определяемую bmin ∈ [0,1]³ и bmax ∈ [0,1]³, такую, что bmini ≤ bmaxi, где i ∈ {x, y, z}. Масштабирование и перемещение могут быть применены для последующей установки размера и положения, например, путем преобразования пересекающегося луча. Обратите внимание, что поверхность внутри вокселя существует, только если хотя бы один sijk ≥ 0 и один sijk ≤ 0.

Мы начнем с описания того, как вычислить точку пересечения между трехлинейно интерполированной поверхностью внутри вокселя и ребром вокселя. Поскольку поверхность возвращается к линейной интерполяции по одной переменной вдоль каждого ребра, вдоль ребра может быть не более одного пересечения. Если трехмерная точка в начале ребра вокселя равна p0 с расстоянием со знаком s0, а конец ребра равен p1 с расстоянием со знаком s1, то поверхность пересекает ребро в:

p = p0+t(p1-p0), где t=s0/(s0-s1)∈[0,1]

если s0·s1 ≤ 0, т.е. они имеют разные знаки или хотя бы один из них равен нулю. Чтобы избежать делений на ноль, когда s0 = s1, мы сначала выполняем тщательную инициализацию bmin и bmax и не оцениваем уравнение 2, когда s0 = s1. Это включает случай, когда s0 = 0 и s1 = 0, что указывает на наличие поверхности вдоль всего ребра, и, как следствие, это ребро должно быть включено в рамку.

Для инициализации прямоугольника отметим, что если любое из четырех обозначенных расстояний на четырехугольной грани равно нулю, то соответствующая координата ограничивающей рамки должна быть равна 0 или 1. Для x-координаты жесткой ограничивающей рамки мы эффективно выражаем это как:

bminx = (Z(s000)|Z(s001)|Z(s010)|Z(s011)==1)?0:1,
bmaxx = (Z(s100)|Z(s101)|Z(s110)|Z(s111)==1)?0:1,

где Z(t) равно 1, если t равно нулю, а в противном случае равно 0, и | является двоичным ИЛИ. Обратите внимание, что если bminx = 1 и bmaxx = 0, то это указывает на недопустимый флажок. Аналогичные вычисления выполняются для y- и z-координат.

Когда инициализация bmin и bmax выполнена, их можно использовать в сочетании с точками пересечения ребер для вычисления строгой, выровненной по оси ограничивающей рамки (AABB) только вокруг поверхности внутри вокселя. Это поле можно найти как наименьший AABB вокруг инициализированных bmin и bmax, и все существующие точки пересечения ребер (Уравнение 2) между поверхностью (Уравнение 1) и 12 ребрами вокселя. Далее следует набросок доказательства этого утверждения.

Эскиз доказательства

Для начала давайте сосредоточимся на кривой, которая генерируется на определенной грани вокселя, например, z = 0. Кривая на этой грани определяется как:

f(x,y) = (1-y)((1-x)s000 + xs100) + y((1-x)s010+xs110)

Некоторые примеры показаны на рисунке 3. Обратите внимание, что можно переписать уравнение 4 для f(x, y) = 0, потому что мы включаем 0 в это сравнение, поскольку f(x, y, z) = 0 указывает, что (x, y, z) лежит на поверхности:

y = (-s000 - x(s100 - s000)) / (s010 - s000 kx)

Как видно на рисунке 3, эта кривая часто делится на две части. Однако, когда s110 - s010 - s100 + s000 = 0, он возвращается к одной прямой линии.

Дифференцирование уравнения 4 показывает, что и ∂f/∂x, и ∂f/∂y являются линейными по y и x. Это означает, что кривая f(x, y) монотонна, но она может быть разрывной (если только это не прямая линия), поскольку знаменатель в уравнении 5 является линейной функцией по x, и знаменатель будет равен 0 для x = (s000 - s010)/k.

(∂f(x,y)/∂x,∂f(x,y)/∂y) = s100 - s000 + ky, s010 - s000 + kx

Мы утверждаем, что плотная двумерная ограничивающая рамка (AABB) кривой, выровненная по оси, на грани вокселя является наименьшей AABB вокруг точек пересечения кривой и четырех ребер вокселя. В случае с прямой линией это определенно так. Если только один изогнутый сегмент находится внутри единичного квадрата, то эта часть кривой должна быть ограничена точками пересечения кривой с краями вокселя, поскольку кривая монотонна. Два изогнутых сегмента внутри единичного квадрата могут возникать только в том случае, если два противоположных угла имеют одинаковые знаки для обозначенных ими расстояний, в то время как два других угла имеют противоположные знаки по сравнению с этими первыми расстояниями. В этом случае наиболее плотным AABB на этой грани вокселя является вся грань вокселя.

Поскольку любой двумерный срез вокселя, выровненный по оси, имеет такое поведение и поскольку кривые монотонны, из этого следует, что плотный трехмерный AABB вокруг поверхности внутри вокселя может быть найден как наименьший AABB вокруг точек пересечения поверхности и краев вокселя. На этом наш набросок доказательства завершается.

Вычисление кирпичной коробки

В структуре данных sparse brick set (SBS) использовались AABB вокруг каждого "кирпича" вокселов, и вокруг этих AABB была построена иерархия ограничивающих объемов (BVH). Блок вокселов может быть, например, размером 7×7×7 вокселов. Ранее использовалась ограничивающая рамка вокруг всего блока, что было упущением, поскольку простым улучшением было бы вычислить наименьший AABB вокруг непустых вокселов. Мы еще больше улучшаем это, предлагая вычислить жесткие ограничивающие рамки для каждого непустого вокселя в блоке, используя метод из раздела 2. Последняя кирпичная коробка - это самый маленький AABB вокруг всех этих плотных воксельных коробок. Это показано на рисунке 4.

Примеры кривых на гранях вокселей
Рисунок 3: Примеры кривых, сгенерированных с использованием билинейной интерполяции, на квадратных гранях вокселей. Красные ограничивающие рамки можно найти как наименьшие, выровненные по оси, ограничивающие рамки вокруг фиолетовых кругов (точек пересечения граней вокселя и кривой).
Сравнение методов ограничивающих рамок для блока
Рисунок 4: Двумерный блок из вокселей 4×4, содержащий черную кривую. Красная рамка - вокруг всего блока. Зеленая рамка - вокруг непустых вокселов. Пунктирная синяя рамка (наш метод) - наименьший AABB вокруг плотных воксельных блоков (серые пунктирные).

Результаты

Мы реализовали наш алгоритм в фреймворке рендеринга Falcor и сравнили с методами Ханссона Седерлунда и др. В частности, мы сравниваем со структурами данных sparse voxel set (SVS) и sparse brick set (SBS), где мы добавили наш метод. В структуре данных SVS AABB вычисляется вокруг каждого вокселя, а BVH строится вокруг всех таких AABB. В структуре данных SBS хранится только один AABB вокруг каждого блока вокселов (в нашем случае кирпич равен 7³ вокселям). Затем BVH строится вокруг всех кирпичных AABB и трассируется лучами с помощью графического процессора.

Мы собрали результаты как для NVIDIA RTX 3090, так и для RTX 4090. Перед измерением рендеринг производился на полной скорости в течение 180 секунд, чтобы прогреть графический процессор и избежать временной высокочастотной синхронизации. Камера была анимирована, и измерения производились на протяжении 4,500 кадров с разрешением 1920 × 1080 пикселей. Все значения времени указаны в миллисекундах и включают трассировку пути, накопление выборок и отображение тона.

Сцены, которые мы использовали для оценки, показаны на рисунке 5, где разрешение сетки составляло 5123 для каждого объекта. Наша оценка производительности проводилась с использованием только корневого решателя Marmitt et al. [MKWF04] и используя только интерполированные непрерывные нормали и быстрое тестирование теневых лучей [HEAM22]. Ожидается, что другие результаты работы Ханссона Седерлунда и др. сохранят те же соотношения и, следовательно, будут опущены. Основные результаты расчета сроков приведены в таблице 1.

Тестовые сцены для оценки производительности
Рисунок 5: Тестовые сцены, используемые для оценки производительности.
RTX 3090 / RTX 4090 Гоблинские головы Дама
SVS [HEAM22] 12,7 / 5,8 25,0 / 9,5
SVS (наши) 10,1 / 4,6 17,2 / 6,8
Снижение 20,3% / 19,7% 31,2% / 28,0%
SBS [HEAM22] 21,7 / 10,0 37,3 / 16,4
SBS (наша) 17,4 / 8,0 26,7 / 11,9
Сокращение 19,9% / 20,0% 28,5% / 27,3%
Таблица 1: Общее время кадрирования для трех сцен на рисунке 5 , отрисованных с разрешением 1920×1080пикселей. Время указывается в миллисекундах. Как можно видеть, наш вариант SVS с более жесткими ограничивающими рамками сокращает общее время кадра на 20-31% по сравнению с предыдущим методом, а наш вариант SBS с более жесткими рамками сокращает общее время кадра на 20-29%. Измерения проводились на NVIDIA RTX 3090 / 4090. Обратите внимание, что процентные значения были рассчитаны с использованием полной точности и поэтому не всегда совпадают, если процентные значения вычисляются непосредственно на основе чисел из таблицы.

На RTX 3090 общее сокращение времени кадра составило 20-31% для SVS и 20-28% для RTX 4090. Для SBS снижение составило 20-29% для RTX 3090 и 20-27% для RTX 4090. По нашему мнению, для такой небольшой модификации улучшение производительности довольно существенное. Основные результаты, приведенные выше для SBS, были получены с использованием метода с наименьшими AABB, которые мы могли вычислить, т. е. С использованием метода, изображенного синей пунктирной линией на рисунке 4. Мы не сообщаем полных результатов для метода с зеленой рамкой на рисунке 4, а вместо этого лишь отмечаем, что он был примерно на 3% медленнее, чем предлагаемый метод с использованием наименьших значений AABB.

Выводы и будущая работа

Мы представили методы вычисления жестких ограничивающих рамок для поверхности внутри вокселя, определяемой трехлинейной интерполяцией подписанных расстояний в углах вокселя. Кроме того, аналогичный метод был представлен для кирпичей, то есть небольших блоков вокселей. При усреднении по двум графическим процессорам и трем сценам наш метод SVS позволил сократить общее время кадра на 26%. Для SBS этот показатель составил 25%.

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

Благодарность: Спасибо Брайану Кэрису за информацию о первой части расчета brick box.

Ссылки

  1. AАЛТОНЕН С.: Технология моделирования Clay на базе графического процессора и трассировки лучей в Claybook. На конференции разработчиков игр (2018).
  2. BЛУМЕНТАЛЬ Дж., BАДЖАДЖ К., BЛИНН Дж., WИВИЛЛ Б., CАНИ М.-П., RОКВУД А., WИВИЛЛ Г.: Введение в неявные поверхности. 1997.
  3. EVANS A.: Извлекая уроки из неудач: обзор многообещающих, нетрадиционных и по большей части заброшенных рендеров для Dreams PS4. В Достижениях в области рендеринга в реальном времени в играх, курсы SIGGRAPH (2015).
  4. Х.АНСОН С.ЭДЕРЛУНД Х., ЭВАНС А., АКЕНИН-МОЛЛЕР Т.: Трассировка лучей сеток функций расстояния со знаком. Журнал методов компьютерной графики 11, 3 (сентябрь 2022 г.), 94-113.
  5. КОЛВЕЙТ С., КЛАРБЕРГ П., КОЛБ С., УАО К.-Х., Ф.ОЛЕЙ T., WU L., CHEN L., AKENINE-MÖLLER T., WYMAN C., CRASSIN C., BENTY N.: Платформа рендеринга Falcor, август 2021 года.
  6. МАСДОНАЛЬД Дж. Д., БООТ К. С.: Эвристика для трассировки лучей с использованием пространственного разбиения. Визуальный компьютер 6, 3 (1990), 153-166.
  7. МЭЙССНЕР М., Д.ОГГЕТТ М., К.АМУС У., Х.ИРЧЕ Дж.: Ускорение объемного рендеринга с использованием встроенной карты заполнения SRAM. В Международном симпозиуме IEEE по схемам и системам (2001), стр. 757-760.
  8. МАРМИТТ Г., К.ЛЕЕР А., У.АЛЬД И., Ф.РИДРИХ Х.: Быстрые и точные методы пересечения лучей с вокселями для трассировки лучей с изоповерхностной поверхности. В Видении, моделировании и визуализации (2004), стр. 429-435.
  9. МЭЙСТЕР Д., ОГАКИ С., БЭНТИН С., ДОЙЛ М. Дж., ГУТЕ М., БИТТНЕР Дж.: Обзор иерархий ограниченных объемов для трассировки лучей. Форум по компьютерной графике 40, 2 (2021), 683-712.