Что такое Рэй Маршинг? Сфера отслеживает одно и то же?

31

Многие демоверсии ShaderToy используют алгоритм Ray Marching для рендеринга сцены, но они часто написаны в очень компактном стиле, и я не могу найти простых примеров или объяснений.

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

psicomante
источник

Ответы:

34

TL; DR

Они принадлежат к тому же семейству решателей, где сферическое отслеживание является одним из методов лучевого марширования, то есть фамилией.

Raymarching определение

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

Это может быть полезно, если вы:

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

Традиционный Raymarching

Изображение 1 : Традиционный лучевой марш для нахождения поверхности

Похожие сообщения:

Трассировка сферы

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

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

F(X,Y,Z) = 0

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

Сфера отслеживания имеет адаптивный размер шага

Рисунок 2. Трассировка сферы * в действии. Обратите внимание на адаптивный размер шага.

Для получения дополнительной информации см .:

* Возможно, в 2d это следует называть круговой трассировкой :)

joojaa
источник
1
Я бы рекомендовал эту статью из Scratchapixel для объяснения углубленному: scratchapixel.com/lessons/advanced-rendering/...
user18490
Ссылка @ user18490 на Scratchapixel перемещена на scratchapixel.com/lessons/advanced-rendering/… . Остальная часть сайта ( scratchapixel.com/index.php ) также выглядит полезной.
WillC
15

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

введите описание изображения здесь
Изображения из рендеринга геометрии с рельефными текстурами

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

введите описание изображения здесь

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

Трассировка сферы может относиться к неявному тесту пересечения луча и сферы, но это также название техники космического прыжка Джона Харта, как упоминает @joojaa, и используемой Уильямом Доннелли ( Отображение смещения на пиксель с функциями расстояния ), где 3D текстура кодирует радиусы сфер, в которых не существует геометрии.

jozxyqk
источник
Ха, вот и ты, снимать изображения у других более эффективно, чем рисовать их самостоятельно.
joojaa
@joojaa Да, быстрее, если вы помните, где они были, но без этого приятного чувства, что вы делаете это сами: P. Также у меня есть эта глупая ошибка рендеринга субпикселя в chrome, поэтому текст все красочный.
Jozxyqk
1
Хорошо, что субпиксельный рендеринг - это то, о чем не спрашивали. Еще.
joojaa
1
сделано .
Jozxyqk