Рэй марширует
Марширование лучей — это класс методов рендеринга для 3D-компьютерной графики , в которых лучи пересекаются итеративно, эффективно разделяя каждый луч на более мелкие сегменты лучей, выполняя выборку некоторой функции на каждом этапе. Например, при объемном преобразовании лучей функция будет получать доступ к точкам данных 3D-сканирования. При трассировке сферы функция оценивает расстояние до следующего шага. Марширование лучей также используется в физическом моделировании как альтернатива трассировке лучей , где решаются аналитические решения траекторий световых или звуковых волн. Марширование лучей для компьютерной графики часто использует преимущества SDF для определения максимального безопасного размера шага, хотя это менее распространено в физическом моделировании; аналогичный метод адаптивного шага может быть достигнут с использованием адаптивных методов Рунге-Кутты .
Марш с лучом на расстоянии [ править ]
Трассировка сфер [ править ]

При трассировке сферы [1] или луч с помощью сферы, проходящий через точку пересечения, аппроксимируется между лучом и поверхностью, определяемой функцией расстояния со знаком (SDF). SDF оценивается для каждой итерации, чтобы иметь возможность делать как можно большие шаги, не пропуская ни одной части поверхности. Порог используется для отмены дальнейшей итерации при достижении точки, достаточно близкой к поверхности. Когда мощное графическое оборудование стало более доступным, этот метод стал популяризироваться демосценой и Иниго Килезом. [ нужна ссылка ] соавтор Shadertoy .
Для простых сцен с базовыми трехмерными формами марширование лучей не имеет особых преимуществ по сравнению с трассировкой лучей (которая находит пересечения без марша по пространству). Сильные стороны марширования лучей SDF заключаются, например, в морфинге форм, аппроксимации мягких теней, повторении геометрии и алгоритмически определенных сценах.
Функции расстояния со знаком существуют для многих примитивных трехмерных фигур. [2] Их можно комбинировать с помощью математических операций, таких как модуль и логические значения, для формирования более сложных поверхностей. Например, взятие модуля входных координат SDF распределяет его объем по всему пространству, а взятие максимума из двух SDF дает поверхность пересечения их объемов. Поскольку SDF можно определить для многих фракталов, для трехмерного фрактального рендеринга часто используется трассировка сфер. [3]
С помощью куба [ править ]
метод, аналогичный методу марширования лучей с помощью сферы, использование кубов и расстояния в такси Для визуализации объемов вокселей можно использовать .
Объемный луч марширующий [ править ]
При объемном перемещении лучей каждый луч отслеживается так, что цвет и/или плотность можно отбирать вдоль луча, а затем объединять в окончательный цвет пикселя. Это часто используется, например, при рендеринге облаков или медицинских 3D-сканах.
Отложенное затенение [ править ]
При рендеринге эффектов экранного пространства , таких как отражение экранного пространства (SSR) и тени экранного пространства, лучи трассируются с использованием G-буферов , где данные о глубине и нормали поверхности сохраняются для каждого 2D-пикселя.
Внешние ссылки [ править ]
Статья 1989 года «Гипертекстура». [4] Кена Перлина содержит ранний пример метода марширования лучей.
Ссылки [ править ]
- ^ Харт, Джон К. (июнь 1995 г.), «Трассировка сфер: геометрический метод трассировки лучей со сглаживанием неявных поверхностей» (PDF) , The Visual Computer
- ^ Килес, Иниго. «3D-функции расстояния» . Иниго Килес . Проверено 8 июля 2022 г.
- ^ Харт, Джон К.; Сандин, Дэниел Дж.; Кауфман, Луи Х. (июль 1989 г.), «Детерминированные трехмерные фракталы трассировки лучей» (PDF) , компьютерная графика
- ^ Перлин, Кен (июль 1989 г.), «Гипертекстура» (PDF) , компьютерная графика