Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Эта рекурсивная трассировка лучей отражающих цветных сфер на белой поверхности демонстрирует эффекты малой глубины резкости , «площадных» источников света и диффузного взаимного отражения .

В 3D компьютерной графики , трассировки лучей является рендеринг метод генерирования изображения путем отслеживания пути света в качестве пикселей в плоскости изображения и воспроизведения эффектов его столкновений с виртуальными объектами. Этот метод обеспечивает высокую степень визуального реализма, более высокую, чем обычные методы рендеринга строк развертки , но требует больших вычислительных затрат . Это делает трассировку лучей наиболее подходящей для приложений, в которых допускается относительно продолжительное время рендеринга, например, для неподвижных компьютерных изображений, визуальных эффектов в кино и телевидении.(VFX), но, как правило, хуже подходит для приложений реального времени, таких как видеоигры , где скорость имеет решающее значение при рендеринге каждого кадра . Однако в последние годы аппаратное ускорение для трассировки лучей в реальном времени стало стандартом для новых коммерческих видеокарт, и графические API-интерфейсы последовали его примеру, позволив разработчикам добавлять методы трассировки лучей в реальном времени в игры и другие средства визуализации в реальном времени с помощью меньшее, хотя и существенное снижение времени рендеринга кадров.

Трассировка лучей позволяет моделировать различные оптические эффекты, такие как отражение и преломление , рассеяние и явления дисперсии (например, хроматическая аберрация ). Его также можно использовать для отслеживания пути звуковых волн аналогично световым волнам, что делает его жизнеспособным вариантом для более захватывающего звукового дизайна в видеоиграх за счет реалистичной реверберации и эхо . Фактически, с помощью этих методов можно смоделировать любую физическую волну или явление частицы с приблизительно линейным движением.

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

Гибридная трассировка лучей - это комбинация трассировки лучей и растеризации . [1] [2]

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

На этой гравюре Альбрехта Дюрера 1525 года изображена дверь Дюрера.
Это изображение Альбрехта Дюрера 1532 года показывает человека, использующего сетку для создания изображения. Считается, что немецкий художник эпохи Возрождения первым описал эту технику.

Идея трассировки лучей возникла еще в 16 веке, когда ее описал Альбрехт Дюрер , которому приписывают ее изобретение. [3] В « Четырех книгах по измерениям» он описал устройство, называемое дверью Дюрера, с помощью нити, прикрепленной к концу стилуса, которую помощник перемещает по контурам объекта для рисования. Нить проходит через дверную коробку, а затем через крючок на стене. Нить образует луч, а крючок действует как центр проекции и соответствует положению камеры при трассировке лучей. [4] [5]

История компьютеризированной трассировки лучей для рендеринга изображений в основном отслеживает развитие компьютерного оборудования. Первые системы были пакетными (компьютерные перфокарты или магнитная лента) и работали на относительно медленных компьютерах с основной памятью. Теперь графические процессоры ( графические процессоры ) поддерживают трассировку лучей для большей реалистичности в динамичных трехмерных компьютерных играх.

Использование компьютера для трассировки лучей для создания закрашенных изображений было создано Голдштейном и Нагелем из MAGI (Mathematics Applications Group, Inc.). [6] В их работе цитируется более ранняя работа Артура Аппеля по «визуальному моделированию трехмерных объектов» [7]который «использует« количественную невидимость »для устранения скрытых линий и дополнительную программу для получения вывода в градациях серого», поэтому на самом деле это не «трассировка лучей». В статье Голдсейна и Нагеля «3-D Visual Simulation» трассировка лучей используется для создания закрашенных изображений твердых тел путем имитации фотографического процесса в обратном порядке. Для каждого элемента изображения (пикселя) на экране они пропускают через него луч света в сцену, чтобы идентифицировать видимую поверхность. Поверхность, пересекаемая лучом, найденная путем «прослеживания» по нему, была видимой. В найденной точке пересечения луча и поверхности они вычислили нормаль к поверхности и, зная положение источника света, вычислили яркость пикселя на экране. В их публикации описан короткий (30-секундный) фильм, «сделанный с использованием аппаратного обеспечения дисплея Университета Мэриленда, оснащенного 16-миллиметровой камерой.В фильме показан вертолет и простая установка орудия с уровня земли. Вертолет был запрограммирован на выполнение серии маневров, включая повороты, взлет, посадку и т. Д., Пока в конечном итоге он не был сбит и разбился ». Использовался компьютер CDC 6600.

Расширяя этот метод, компания MAGI разработала коммерческую систему CAD / CAM под названием SynthaVision, которая создавала закрашенные изображения и линейные чертежи, вычисляла массовые характеристики и проверяла невмешательство в операции обработки с ЧПУ. К сожалению, из-за вычислительной мощности компьютера в то время это была дорогая пакетная система. MAGI выпустила анимационное видео под названием MAGI / SynthaVision Sampler в 1974 году. [8]

Flip book: ранняя трассировка лучей

В 1976 году Скотт Рот создал анимационную книжку-книжку в курсе компьютерной графики Боба Спроулла в Калифорнийском технологическом институте, используя трассировку лучей с помощью простой модели камеры-обскуры . Отсканированные страницы отображаются в виде видео справа. Компьютерная программа Рота отметила крайнюю точку в местоположении пикселя, если луч пересекал ограниченную плоскость, отличную от плоскости его соседей. Конечно, луч мог пересекать несколько плоскостей в пространстве, но только ближайшая к камере точка поверхности была отмечена как видимая. Края неровные, потому что только грубое разрешение было практичным с вычислительной мощностью используемого DEC PDP-10 с разделением времени . «Терминалом» был Tektronixдисплей трубки хранения для текста и графики. К дисплею был прикреплен принтер, который создавал изображение дисплея на [катящейся] термобумаге. (Хотя нормаль к поверхности могла быть вычислена на каждом пересечении луча и поверхности для рендеринга в градациях серого, пиксели дисплея были только двоичными: зелеными или черными.) Рот расширил рамки, введя термин " луч-литье" в контексте компьютерной графики и твердотельное моделирование .

Рот изобрел термин « лучи-кастинг » до того, как услышал о «трассировке лучей», но по сути это то же самое. Его разработка метода трассировки лучей [9] в GM Research Labs происходила одновременно с работой Тернера Уиттеда по трассировке лучей в Bell Labs. [10] Для каждого пикселя изображения в сцену отбрасывается луч, идентифицируется видимая поверхность, вычисляется нормаль к поверхности в видимой точке и вычисляется интенсивность видимого света. Для моделирования теней, прозрачности и общей зеркальности (например, зеркал) используются дополнительные лучи.

Уиттед выпустил фильм с трассировкой лучей под названием Compleat Angler [11] в 1979 году, работая инженером в Bell Labs. Он смоделировал преломление для прозрачных пленок в видео, создав вторичный луч из видимой точки поверхности под углом, определяемым показателем преломления твердого тела. Затем вторичный луч обрабатывается как зеркальный луч.

До 2013 года крупномасштабное глобальное освещение в основных фильмах с использованием компьютерных изображений имитировалось дополнительным освещением. Фильм Pixar « Университет монстров» 2013 года был первым анимационным фильмом, в котором трассировка лучей использовалась для всего освещения и затенения. [12]

Обзор алгоритма [ править ]

Алгоритм трассировки лучей создает изображение, распространяя лучи на сцену и отражая их от поверхностей и к источникам света, чтобы приблизить значение цвета пикселей.
Иллюстрация алгоритма трассировки лучей для одного пикселя (до первого отскока)

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

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

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

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

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

Расчет лучей для прямоугольного окна просмотра [ править ]

На входе мы имеем (при расчете используем векторную нормализацию и кросс-произведение ):

  • положение глаз
  • целевая позиция
  • поле зрения - для человека можно предположить
  • количество квадратных пикселей в области просмотра по вертикали и горизонтали
  • количество фактических пикселей
  • вертикальный вектор , который указует , где вверх и вниз, как правило , (не виден на рисунке) - рулонный компонент , который определяет видовое вращение вокруг точки С (где осью вращения является секция ЕТ)

Идея состоит в том, чтобы найти положение центра каждого пикселя области просмотра, которое позволяет нам найти линию, идущую от глаза через этот пиксель, и, наконец, получить луч, описанный точкой и вектором (или его нормализацию ). Сначала нам нужно найти координаты нижнего левого пикселя области просмотра и найти следующий пиксель, сделав сдвиг по направлениям, параллельным области просмотра (векторы i ), умноженные на размер пикселя. Ниже мы вводим формулы, которые включают расстояние между глазом и окном просмотра. Однако это значение будет уменьшено во время нормализации лучей (так что вы можете принять это и удалить из вычислений).

Предварительные расчеты: давайте найдем и нормализуем вектор и векторы, которые параллельны окну просмотра (все изображено на картинке выше)

Обратите внимание, что центр области просмотра , затем мы вычисляем размеры области просмотра, разделенные на 2, включая соотношение сторон

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

Расчеты: note and ray so

Вышеупомянутая формула была протестирована в этом проекте javascript (работает в браузере).

Подробное описание компьютерного алгоритма трассировки лучей и его происхождения [ править ]

Что происходит в (упрощенной) природе [ править ]

В природе источник света испускает луч света, который в конечном итоге попадает на поверхность, которая прерывает его движение. Этот «луч» можно представить себе как поток фотонов, движущихся по одному и тому же пути. В идеальном вакууме этот луч будет прямой (без учета релятивистских эффектов ). С этим световым лучом может произойти любая комбинация четырех вещей: поглощения , отражения , преломления и флуоресценции . Поверхность может поглощать часть светового луча, что приводит к потере интенсивности отраженного и / или преломленного света. Он также может отражать весь или часть светового луча в одном или нескольких направлениях. Если на поверхности есть прозрачные илиполупрозрачные свойства, он преломляет часть светового луча в себя в другом направлении, поглощая при этом часть (или весь) спектр(и, возможно, изменение цвета). Реже поверхность может поглощать некоторую часть света и флуоресцентно переизлучать свет более длинноволновым цветом в случайном направлении, хотя это бывает достаточно редко, поэтому его можно исключить из большинства приложений визуализации. Между поглощением, отражением, преломлением и флуоресценцией необходимо учитывать весь входящий свет, и не более того. Например, поверхность не может отражать 66% падающего светового луча и преломлять 50%, так как в сумме они составят 116%. Отсюда отраженные и / или преломленные лучи могут попадать на другие поверхности, где их поглощающие, преломляющие, отражающие и флуоресцентные свойства снова влияют на прохождение входящих лучей. Некоторые из этих лучей движутся таким образом, что попадают в наш глаз, заставляя нас видеть сцену и тем самым вносить свой вклад в окончательное визуализированное изображение.

Алгоритм Ray casting [ править ]

Идея построения лучей, предшествующая рекурсивной трассировке лучей, состоит в том, чтобы отслеживать лучи от глаза, по одному на пиксель, и находить ближайший объект, блокирующий путь этого луча. Представьте изображение как дверь-ширму, где каждый квадрат экрана является пикселем. Это объект, который видит глаз через этот пиксель. Используя свойства материала и эффект света в сцене, этот алгоритм может определить затенение этого объекта. Делается упрощающее предположение, что если поверхность обращена к свету, свет достигнет этой поверхности и не будет блокироваться или находиться в тени. Затенение поверхности вычисляется с использованием традиционных моделей затенения 3D компьютерной графики. Одно из важных преимуществ, которое предлагает кастинг лучей по сравнению со старыми алгоритмами сканирования строкбыла его способность легко работать с неплоскими поверхностями и твердыми телами, такими как конусы и сферы . Если математическая поверхность может быть пересечена лучом, ее можно визуализировать с помощью преобразования лучей. Сложные объекты можно создавать с помощью методов твердотельного моделирования и легко визуализировать.

Алгоритм рекурсивной трассировки лучей [ править ]

Трассировка лучей позволяет создавать фотореалистичные изображения.
Помимо высокой степени реализма, трассировка лучей может имитировать эффекты камеры из-за глубины резкости и формы апертуры (в данном случае шестиугольника ).
Количество отражений или отскоков, которые может сделать «луч», и то, как на него влияет каждый раз, когда он встречается с поверхностью, контролируется настройками в программном обеспечении. На этом изображении каждому лучу позволяли отражаться до 16 раз . Таким образом, в этих сферах можно увидеть множественные «отражения отражений». (Изображение создано с помощью Cobalt .)
Количество преломлений, которые может сделать «луч», и то, как на него влияет каждый раз, когда он сталкивается с поверхностью, которая позволяет пропускать свет , контролируется настройками в программном обеспечении. Здесь каждый луч был настроен на преломление или отражение («глубину») до 9 раз . Использовались отражения Френеля, и каустики видны. (Изображение создано с помощью V-Ray .)

Более ранние алгоритмы отслеживали лучи от глаза до сцены, пока они не попадали в объект, но определяли цвет луча без рекурсивного отслеживания других лучей. Рекурсивная трассировка лучей продолжает процесс. Когда луч падает на поверхность, из-за отражения, преломления и тени могут испускаться дополнительные лучи .: [13]

  • Луч отражения прослеживается в направлении зеркального отражения. Ближайший объект, который он пересекает, будет виден в отражении.
  • Луч преломления, проходящий через прозрачный материал, работает аналогично, с той лишь разницей, что преломляющий луч может входить в материал или выходить из него. Тернер Уиттед расширил математическую логику для лучей, проходящих через прозрачное твердое тело, включив в него эффекты преломления. [14]
  • К каждому источнику света направляется теневой луч. Если между поверхностью и источником света находится какой-либо непрозрачный объект, поверхность находится в тени и свет не освещает ее.

Эти рекурсивные лучи добавляют больше реализма изображениям с трассировкой лучей.

Преимущества перед другими методами рендеринга [ править ]

Популярность рендеринга на основе трассировки лучей объясняется тем, что он основан на реалистичном моделировании переноса света по сравнению с другими методами рендеринга, такими как растеризация , который больше ориентирован на реалистичное моделирование геометрии. Такие эффекты, как отражения и тени , которые трудно смоделировать с помощью других алгоритмов, являются естественным результатом алгоритма трассировки лучей. Вычислительная независимость каждого луча делает трассировки лучей поддается базового уровня параллелизации , [15] [16] , но расхождение лучевых траекторий делает высокий коэффициент использования при параллельности довольно трудно достичь на практике. [17]

Недостатки [ править ]

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

Хотя традиционная трассировка лучей точно обрабатывает взаимное отражение и оптические эффекты, такие как преломление, она также не обязательно является фотореалистичной . Истинный фотореализм возникает, когда уравнение рендеринга близко приближено или полностью реализовано. Реализация уравнения рендеринга дает настоящий фотореализм, поскольку уравнение описывает каждый физический эффект светового потока. Однако это обычно невозможно с учетом требуемых вычислительных ресурсов.

Реалистичность всех методов рендеринга можно оценить как приближение к уравнению. Трассировка лучей, если она ограничена алгоритмом Уиттеда, не обязательно будет наиболее реалистичной. Методы, которые отслеживают лучи, но включают дополнительные методы ( фотонное картирование , отслеживание пути ), дают гораздо более точное моделирование реального освещения.

Обратное направление обхода сцены лучами [ править ]

Процесс попадания лучей из глаза в источник света для рендеринга изображения иногда называют обратной трассировкой лучей , поскольку в действительности фотоны движутся в противоположном направлении. Однако в этой терминологии возникает путаница. Ранняя трассировка лучей всегда проводилась от глаза, и ранние исследователи, такие как Джеймс Арво, использовали термин обратная трассировка лучей, чтобы обозначать получение лучей от источников света и сбор результатов. Поэтому ясно различать глаз на основе в сравнении света на основе трассировки лучей.

В то время как прямое освещение обычно лучше всего измеряется с помощью трассировки лучей на основе глаз, некоторые косвенные эффекты могут выиграть от лучей, создаваемых источниками света. Каустики - это яркие узоры, вызванные фокусировкой света от широкой отражающей области на узкую область (почти) диффузной поверхности. Алгоритм, который направляет лучи непосредственно от источников света на отражающие объекты, отслеживая их пути к глазу, лучше отследит это явление. Эта интеграция лучей на основе глаз и света часто выражается как двунаправленное отслеживание пути, при котором пути отслеживаются как от глаза, так и от источников света, а пути впоследствии соединяются соединительным лучом после некоторой длины. [18] [19]

Фотонное картирование - это еще один метод, использующий трассировку лучей как по свету, так и по глазам; на начальном проходе энергетические фотоны прослеживаются вдоль лучей от источника света, чтобы вычислить оценку лучистого потока как функцию трехмерного пространства (сама одноименная карта фотонов). В последующем проходе лучи прослеживаются от глаза к сцене для определения видимых поверхностей, а фотонная карта используется для оценки освещенности в точках видимой поверхности. [20] [21] Преимущество отображения фотонов по сравнению с двунаправленным отслеживанием пути заключается в возможности значительного повторного использования фотонов, сокращая объем вычислений за счет статистической погрешности.

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

Изображение, показывающее рекурсивно генерируемые лучи от «глаза» (и через плоскость изображения) к источнику света после встречи с двумя рассеянными поверхностями .

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

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

Пример [ править ]

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

В векторных обозначениях уравнение сферы с центром и радиусом имеет вид

Любая точка на луче , начиная с точки с направлением (здесь является единичным вектором ) можно записать в виде

где его расстояние между и . В нашей задаче, мы знаем , , (например , положение источника света) и , и нам нужно найти . Поэтому мы заменяем :

Пусть для простоты; тогда

Знание того, что d является единичным вектором, позволяет нам сделать это небольшое упрощение:

Это квадратное уравнение имеет решения

Два значения, найденные путем решения этого уравнения, - это два таких значения, которые являются точками, где луч пересекает сферу.

Любое отрицательное значение лежит не на луче, а на противоположной полуоси (то есть на той, которая начинается с противоположного направления).

Если величина под квадратным корнем ( дискриминант ) отрицательна, то луч не пересекает сферу.

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

Нормаль к сфере просто

где - найденная ранее точка пересечения. Направление отражения может быть найдено с помощью отражения от относительно , то есть

Таким образом, отраженный луч имеет уравнение

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

Адаптивный контроль глубины [ править ]

Адаптивное управление глубиной означает, что рендерер прекращает генерировать отраженные / проходящие лучи, когда вычисленная интенсивность становится меньше определенного порога. Всегда должна быть установлена ​​максимальная глубина, иначе программа генерирует бесконечное количество лучей. Но не всегда нужно идти на максимальную глубину, если поверхности не обладают высокой отражающей способностью. Чтобы проверить это, трассировщик лучей должен вычислить и сохранить произведение глобальных коэффициентов и коэффициентов отражения по мере трассировки лучей.

Пример: пусть Kr = 0,5 для набора поверхностей. Тогда от первой поверхности максимальный вклад составляет 0,5, для отражения от второй: 0,5 × 0,5 = 0,25, третьей: 0,25 × 0,5 = 0,125, четвертой: 0,125 × 0,5 = 0,0625, пятой: 0,0625 × 0,5 = 0,03125. и т. д. Кроме того, мы можем реализовать коэффициент затухания на расстоянии, такой как 1 / D2, который также уменьшит вклад интенсивности.

Для проходящего луча мы могли бы сделать нечто подобное, но в этом случае расстояние, пройденное через объект, вызвало бы еще более быстрое уменьшение интенсивности. В качестве примера Холл и Гринберг обнаружили, что даже для очень отражающей сцены использование этого с максимальной глубиной 15 привело к средней глубине дерева лучей 1,7. [23]

Ограничивающие объемы [ править ]

Включение групп объектов в наборы иерархических ограничивающих объемов снижает объем вычислений, необходимых для трассировки лучей. Литой луч сначала проверяется на пересечение с ограничивающим объемом , а затем, если есть пересечение, объем рекурсивно делится, пока луч не попадает в объект. Наилучший тип ограничивающего объема будет определяться формой нижележащего объекта или объектов. Например, если объекты длинные и тонкие, сфера будет заключать в основном пустое пространство по сравнению с коробкой. С помощью прямоугольников также проще создавать иерархические ограничивающие объемы.

Обратите внимание, что использование подобной иерархической системы (при условии, что это сделано осторожно) изменяет время вычисления пересечения с линейной зависимости от количества объектов на что-то среднее между линейной и логарифмической зависимостью. Это потому, что в идеальном случае каждый тест на пересечение делит возможности на два и приводит к структуре типа двоичного дерева. Этого можно добиться с помощью методов пространственного подразделения, обсуждаемых ниже.

Kay & Kajiya приводят список требуемых свойств для иерархических ограничивающих объемов:

  • Поддеревья должны содержать объекты, которые находятся рядом друг с другом, и чем дальше по дереву, тем ближе должны быть объекты.
  • Объем каждого узла должен быть минимальным.
  • Сумма объемов всех ограничивающих объемов должна быть минимальной.
  • Больше внимания следует уделять узлам рядом с корнем, поскольку обрезка ветви возле корня удалит больше потенциальных объектов, чем один дальше по дереву.
  • Время, затрачиваемое на построение иерархии, должно быть намного меньше времени, сэкономленного при ее использовании.

Интерактивная трассировка лучей[ редактировать ]

Первой реализацией интерактивного трассировщика лучей стала компьютерная графическая система LINKS-1, созданная в 1982 году на Инженерной школе Осакского университета профессорами Омурой Коити, Сиракавой Исао и Каватой Тору с 50 студентами. [ необходима цитата ] Это была компьютерная система с массово-параллельной обработкой данных с 514 микропроцессорами (257 Zilog Z8001s и 257 iAPX 86s ), используемая для рендеринга реалистичной трехмерной компьютерной графики с высокоскоростной трассировкой лучей. По данным Общества обработки информации Японии: «Ядро рендеринга 3D-изображений - это вычисление яркости каждого пикселя, составляющего рендерную поверхность, с заданной точки обзора, источника света и положения объекта. Система LINKS-1 была разработана для реализации методологии рендеринга изображения, в которой каждый пиксель может параллельно обрабатываться независимо с использованием трассировки лучей. Разработав новую методологию программного обеспечения специально для высокоскоростной визуализации изображений, LINKS-1 смогла быстро визуализировать очень реалистичные изображения ». Он использовался для создания раннего 3D- видео неба, похожего на планетарий, полностью сделанного с использованием компьютерной графики. Видео было представлено в павильоне Fujitsu на Международной выставке 1985 года в Цукубе » [24].Это была вторая система, сделавшая это после Evans & Sutherland Digistar в 1982 году. В 1984 году LINKS-1 был признан самым мощным компьютером в мире [25].

Самая ранняя публичная запись о трассировке лучей «в реальном времени» с интерактивным рендерингом (т.е. обновлениями со скоростью более одного кадра в секунду) была отмечена на конференции по компьютерной графике SIGGRAPH 2005 года как инструменты REMRT / RT, разработанные в 1986 году Майком Мууссом для Система твердотельного моделирования BRL-CAD . Первоначально опубликованный в 1987 году в USENIX , трассировщик лучей BRL-CAD был ранней реализацией параллельной сетевой распределенной системы трассировки лучей, которая обеспечивала производительность рендеринга несколько кадров в секунду. [26] Эта производительность была достигнута с помощью высокооптимизированного, но независимого от платформы движка трассировки лучей LIBRT в BRL-CAD и с помощью твердого неявного CSG.геометрия на нескольких параллельных машинах с общей памятью в товарной сети. Трассировщик лучей BRL-CAD, включая инструменты REMRT / RT, по-прежнему доступен и разрабатывается сегодня как программное обеспечение с открытым исходным кодом. [27]

С тех пор были предприняты значительные усилия и исследования по внедрению трассировки лучей в реальном времени для различных целей в конфигурациях автономных настольных компьютеров. Эти цели включают интерактивные приложения трехмерной графики, такие как производство демонстрационных фильмов , компьютерные и видеоигры , а также рендеринг изображений. Некоторые в режиме реального времени программное обеспечение 3D - системы , основанные на трассировке лучей, были разработаны любительскими демо - программистов с конца 1990 - х годов. [28]

В 1999 году группа из Университета Юты под руководством Стивена Паркера продемонстрировала интерактивную трассировку лучей вживую на Симпозиуме по интерактивной 3D-графике 1999 года. Они визуализировали модель из 35 миллионов сфер с разрешением 512 на 512 пикселей, работающую со скоростью примерно 15 кадров в секунду на 60 процессорах. [29]

Проект OpenRT включал в себя высоко оптимизированное программное ядро ​​для трассировки лучей вместе с API-интерфейсом, подобным OpenGL , чтобы предложить альтернативу текущему подходу, основанному на растеризации, для интерактивной трехмерной графики. Аппаратные средства трассировки лучей , такие как экспериментальный модуль обработки лучей, разработанный Свеном Вупом из Саарландского университета , были разработаны для ускорения некоторых вычислительно-ресурсоемких операций трассировки лучей. 16 марта 2007 года Саарский университет представил реализацию высокопроизводительного движка трассировки лучей, который позволял рендерить компьютерные игры с помощью трассировки лучей без интенсивного использования ресурсов. [30]

12 июня 2008 года Intel продемонстрировала специальную версию Enemy Territory: Quake Wars под названием Quake Wars: Ray Traced , использующую трассировку лучей для рендеринга, работающую в основном разрешении HD (720p). ETQW работал со скоростью 14–29 кадров в секунду. Демонстрация прошла на 16-ядерной (4 сокета, 4 ядра) системе Xeon Tigerton, работающей на частоте 2,93 ГГц. [31]

На SIGGRAPH 2009 Nvidia анонсировала OptiX , бесплатный API для трассировки лучей в реальном времени на графических процессорах Nvidia. API предоставляет семь программируемых точек входа в конвейере трассировки лучей, позволяя настраивать камеры, пересечения лучей с примитивом, шейдеры, затенение и т. Д. Эта гибкость обеспечивает двунаправленную трассировку пути, транспортировку света Метрополиса и многие другие алгоритмы рендеринга, которые невозможно реализовать хвостовая рекурсия. [32] Средства визуализации на основе OptiX используются в Autodesk Arnold, Adobe AfterEffects , Bunkspeed Shot, Autodesk Maya , 3ds max и многих других средствах визуализации.

Imagination Technologies предлагает бесплатный API под названием OpenRL, который ускоряет алгоритмы рендеринга на основе хвостовой рекурсивной трассировки лучей и вместе с их запатентованным оборудованием трассировки лучей работает с Autodesk Maya, чтобы обеспечить то, что 3D World называет «трассировкой лучей в реальном времени для обычных художников». [33]

В 2014 году демонстрация видеоигры The Tomorrow Children для PlayStation 4 , разработанная Q-Games и Japan Studio , продемонстрировала новые методы освещения , разработанные Q-Games, в частности, каскадную трассировку лучей воксельного конуса , которая имитирует освещение в реальном времени и использует более реалистичные отражения , чем отражения в пространстве экрана . [34]

Nvidia предлагает аппаратное ускорение трассировки лучей в своих графических процессорах GeForce RTX и Quadro RTX, которые в настоящее время основаны на архитектуре Ampere . Аппаратное обеспечение Nvidia использует отдельный функциональный блок, публично называемый «ядром RT». Этот блок несколько сравним с текстурным блоком по размеру, задержке и интерфейсу с ядром процессора. Устройство включает обход BVH, декомпрессию сжатого узла BVH, тестирование пересечения лучей с AABB и тестирование пересечения лучей и треугольников.

AMD предлагает интерактивную трассировку лучей поверх OpenCL на видеокартах Vega через Radeon ProRender . [35] В октябре 2020 года компания представила серию Radeon RX 6000 , графические процессоры Navi второго поколения с поддержкой трассировки лучей с аппаратным ускорением на онлайн-мероприятии. [36] [37] [38] [39] [40]

PlayStation 5 , Xbox серии X и серии S поддерживают специализированные трассировки луча аппаратных компонентов в своих графических процессоров в режиме реального времени трассировки лучей эффектов. [41] [42] [43] [44]

Вычислительная сложность [ править ]

Для некоторых формулировок задачи трассировки лучей были доказаны результаты различной сложности. В частности, если вариант решения задачи трассировки лучей определяется следующим образом [45] - с учетом начального положения и направления светового луча и некоторой фиксированной точки, достигает ли луч в конечном итоге этой точки, тогда в упомянутой статье подтверждаются следующие результаты:

  • Трассировка лучей в трехмерных оптических системах с конечным набором отражающих или преломляющих объектов, представленных системой рациональных квадратичных неравенств, неразрешима .
  • Трассировка лучей в трехмерных оптических системах с конечным набором преломляющих объектов, представленных системой рациональных линейных неравенств, неразрешима.
  • Трассировка лучей в трехмерных оптических системах с конечным набором прямоугольных отражающих или преломляющих объектов неразрешима.
  • Трассировка лучей в трехмерных оптических системах с конечным набором отражающих или частично отражающих объектов, представленных системой линейных неравенств, некоторые из которых могут быть иррациональными, неразрешимы.
  • Трассировка лучей в трехмерных оптических системах с конечным набором отражающих или частично отражающих объектов, представленных системой рациональных линейных неравенств, является жесткой для PSPACE .
  • Для любого измерения, равного или превышающего 2, трассировка лучей с конечным набором параллельных и перпендикулярных отражающих поверхностей, представленных рациональными линейными неравенствами, находится в PSPACE.

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

  • Трассировка луча
  • Трассировка конуса
  • Распределенная трассировка лучей
  • Глобальное освещение
  • Затенение по Гуро
  • Список программного обеспечения для трассировки лучей
  • Список игр с поддержкой трассировки лучей
  • Параллельные вычисления
  • Трассировка пути
  • Затенение по Фонгу
  • Прогрессивное уточнение
  • Затенение
  • Зеркальное отражение
  • Мозаика
  • Попиксельное освещение

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

  1. ^ «Гибридный рендеринг для освещения в реальном времени: трассировка лучей против растеризации - Воображение» .
  2. ^ «Реализация гибридной трассировки лучей в растеризованном игровом движке - Воображение» .
  3. Георг Райнер Хофманн (1990). «Кто изобрел трассировку лучей?». Визуальный компьютер . 6 (3): 120–124. DOI : 10.1007 / BF01911003 . S2CID 26348610 . .
  4. ^ Стив Люкинг (2013). «Дюрер, рисунок и цифровое мышление - конференция FATE 2013» . brian-curtis.com . Проверено 13 августа 2020 года .
  5. ^ Стив Люкинг. "Стивен Дж. Люкинг" . Проверено 13 августа 2020 года .
  6. ^ Гольдштейн, Роберт; Нагель, Роджер (январь 1971), «3D визуальное моделирование», Simulation , 16 (1): 25–31
  7. Аппель А. (1968) Некоторые методы визуализации твердых тел с помощью машины для затенения . AFIPS Conference Proc. 32 с. 37-45
  8. ^ [1]
  9. ^ Рот, Скотт Д. (февраль 1982), "Луч Кастинг для моделирования твердых тел", компьютерная графика и обработка изображений , 18 (2): 109-144, DOI : 10.1016 / 0146-664X (82) 90169-1
  10. ^ Уиттед Т. (1979) Улучшенная модель освещения для затемненного дисплея . Материалы 6-й ежегодной конференции по компьютерной графике и интерактивным техникам.
  11. ^ [2]
  12. Ms (28 мая 2013 г.). «Эта одушевленная жизнь: световая скорость Pixar приносит новый свет в Университет монстров» . Эта одушевленная жизнь . Проверено 26 мая 2020 года .
  13. Томас Никодим (июнь 2010 г.). «Алгоритм трассировки лучей для интерактивных приложений» (PDF) . Чешский технический университет, FEE .
  14. ^ Уиттед, Т. (1979). «Улучшенная модель освещения для затемненного дисплея» . Материалы 6-й ежегодной конференции по компьютерной графике и интерактивной технике . ISBN 0-89791-004-4.
  15. ^ Небель, Ж.-К. (1998). «Новый параллельный алгоритм на основе модели времени вычислений». Семинар Eurographics по параллельной графике и визуализации, 24–25 сентября 1998 г., Ренн, Франция . OCLC 493481059 . 
  16. ^ Chalmers, A .; Дэвис, Т .; Рейнхард, Э. (2002). Практический параллельный рендеринг . А.К. Петерс. ISBN 1-56881-179-9.
  17. ^ Айла, Тимо; Лайне, Самулий (2009). «Понимание эффективности обхода лучей на графических процессорах». HPG '09: Труды конференции по высокому Graphics Performance 2009 . С. 145–149. DOI : 10.1145 / 1572769.1572792 .
  18. Эрик П. Лафортюн и Ив Д. Виллемс (декабрь 1993 г.). «Двунаправленное отслеживание пути» . Proceedings of Compugraphics '93 : 145–153.
  19. ^ Петера Dornbach (1998). «Реализация алгоритма двунаправленной трассировки лучей» (PDF) . Проверено 11 июня 2008 года .
  20. Глобальное освещение с использованием фотонных карт. Архивировано 8 августа 2008 г. в Wayback Machine.
  21. Фотонная карта - Зак Уотерс
  22. ^ Вич, Эрик; Гибас, Леонидас Дж. (1997). «Метрополис Легкий транспорт». SIGGRAPH '97: Материалы 24-й ежегодной конференции по компьютерной графике и интерактивным методам . С. 65–76. DOI : 10.1145 / 258734.258775 .
  23. ^ Холл, Рой А.; Гринберг, Дональд П. (ноябрь 1983 г.). «Стенд для синтеза реалистичных изображений». Компьютерная графика и приложения IEEE . 3 (8): 10–20. CiteSeerX 10.1.1.131.1958 . DOI : 10,1109 / MCG.1983.263292 . S2CID 9594422 .  
  24. ^ «【Университет Осаки】 Система компьютерной графики LINKS-1» . Компьютерный музей IPSJ . Общество обработки информации Японии . Проверено 15 ноября 2018 года .
  25. ^ Дефанти, Томас А. (1984). Достижения в компьютерах. Том 23 (PDF) . Академическая пресса . п. 121. ISBN.  0-12-012123-9.
  26. См. Труды 4-го семинара по компьютерной графике, Кембридж, Массачусетс, США, октябрь 1987 г., Usenix Association, 1987. pp 86–98.
  27. ^ "О BRL-CAD" . Проверено 18 января 2019 года .
  28. ^ Пьеро Фоскари. «Сфера трассировки лучей в реальном времени» . Транзакции ACM на графике . Проверено 17 сентября 2007 года .
  29. ^ Паркер, Стивен; Мартин, Уильям (26 апреля 1999 г.). «Интерактивная трассировка лучей» . I3D '99 Труды симпозиума 1999 г. по интерактивной трехмерной графике (апрель 1999 г.): 119–126. CiteSeerX 10.1.1.6.8426 . DOI : 10.1145 / 300523.300537 . ISBN  1581130821. S2CID  4522715 . Проверено 30 октября 2019 года .
  30. Марк Уорд (16 марта 2007 г.). «Лучи озаряют реалистичную графику» . BBC News . Проверено 17 сентября 2007 года .
  31. ^ Тео Valich (12 июня 2008). «Intel переводит ET: Quake Wars на трассировку лучей» . TG Daily . Проверено 16 июня 2008 года .
  32. Nvidia (18 октября 2009 г.). «Nvidia OptiX» . Nvidia . Проверено 6 ноября 2009 года .
  33. ^ "3DWorld: Обзор оборудования: карта ускорителя трассировки лучей Caustic Series2 R2500" . Проверено 23 апреля 2013 года .3D World, апрель 2013 г.
  34. Рианна Катберт, Дилан (24 октября 2015 г.). «Создание прекрасных новаторских визуальных эффектов для The Tomorrow Children на PS4» . Блог PlayStation . Проверено 7 декабря 2015 года .
  35. ^ GPUOpen Трассировка лучей в реальном времени
  36. ^ Garreffa, Энтони (9 сентября 2020). «28 октября AMD представит видеокарты нового поколения Big Navi RDNA 2» . Твиктаун . Проверено 9 сентября 2020 года .
  37. ^ Lyles, Тейлор (9 сентября 2020). «В следующем месяце будут представлены процессоры AMD Zen 3 следующего поколения и графический процессор Radeon RX 6000 'Big Navi'» . Грань . Проверено 10 сентября 2020 года .
  38. ^ "AMD дразнит цифры производительности карты Radeon RX 6000: стремясь к 3080?" . anandtech.com . AnandTech . 8 октября 2020 года . Проверено 25 октября, 2020 .
  39. ^ «AMD объявляет о презентациях Ryzen« Zen 3 »и Radeon« RDNA2 »в октябре: новое путешествие начинается» . anandtech.com . AnandTech . 9 сентября 2020 . Проверено 25 октября, 2020 .
  40. Джадд, Уилл (28 октября 2020 г.). «AMD представляет три видеокарты Radeon 6000 с трассировкой лучей и высочайшей производительностью RTX» . Eurogamer . Проверено 28 октября, 2020 .
  41. Уоррен, Том (8 июня 2019 г.). «Microsoft намекает на Xbox следующего поколения« Scarlet »в тизерах E3» . Грань . Проверено 8 октября 2019 года .
  42. Хаим, Гартенберг (8 октября 2019 г.). «Sony подтверждает название PlayStation 5, дата выхода праздника 2020 года» . Грань . Проверено 8 октября 2019 года .
  43. Уоррен, Том (24 февраля 2020 г.). «Microsoft раскрывает больше спецификаций Xbox Series X, подтверждает, что графический процессор 12 терафлопс» . Грань . Проверено 25 февраля 2020 года .
  44. Уоррен, Том (9 сентября 2020 г.). «Microsoft раскрывает спецификации Xbox Series S и обещает в четыре раза большую вычислительную мощность, чем Xbox One» . Грань . Проверено 9 сентября 2020 года .
  45. ^ «Вычислимость и сложность трассировки лучей» (PDF) . CS.Duke.edu .

Внешние ссылки [ править ]

  • Интерактивная трассировка лучей: замена растеризации?
  • Совершенный рыболов (1978)
  • Написание простого трассировщика лучей (скретчапиксель)
  • Трассировка лучей тора
  • Трассировка лучей в серии книг "Одни выходные"