В течение многих лет было много работ по различным методам рисования рельефа местности в трассировщике лучей. Некоторые алгоритмы направляют марш по сетке напрямую (или через quadtree); другие преобразуют местность в полигональную сетку и используют стандартный тест пересечения лучей и треугольников. Исследования, похоже, продвинулись в последние несколько лет, и трудно найти статьи, написанные в последнее десятилетие, но баланс между памятью и вычислениями (как CPU, так и GPU) все еще меняется.
Какой алгоритм в настоящее время обеспечивает наилучшую производительность на настольных компьютерах высокого класса? Или, если нет единого ответа, как отличаются характеристики производительности современных лучших алгоритмов?
raytracing
height-field
Дэн Халм
источник
источник
Ответы:
Для получения информации о текущем состоянии дел ищите эту статью: «Максимальное количество карт для быстрой, точной и масштабируемой визуализации поля с динамической высотой», Tevs et al. 2008
Основная идея состоит в том, чтобы пропустить много места, зная максимальную ценность на больших территориях местности. Если луч остается выше этого, переходите к следующей большой области.
Если вы посмотрите на рисунок 8, вы увидите сравнение базовых линейных степпингов с максимальными мип-картами. Линейный шаг приводит к 200 шагам, что можно сделать в реальном времени на современном графическом процессоре, но все еще на самом деле медленно. Макс мипмапы делают то же самое примерно за 10 шагов, все в шейдере.
источник
Лучшее, что я лично видел, это то, что делает Inigo Quillez, которое используется в демосцене. Лучи маршируйте местность, делая большие шаги по мере удаления от камеры, поскольку (как правило) детали менее важны на расстоянии (исключение = тонкие стены!). Он использует информацию о проникновении и другие легко доступные метрики для имитации окклюзии окружающей среды и других сложных методов освещения.
Вот демонстрация материала в действии: https://www.youtube.com/watch?v=_YWMGuh15nE
А вот страница IQ по лучевой разведке местности, которая довольно интересна для чтения: http://www.iquilezles.org/www/articles/terrainmarching/terrainmarching.htm
Кстати, в современных играх техника «отражения пространства экрана» часто представляет собой всего лишь лучевой марш против буфера Z визуализированной сцены. Z-буфер - это просто поле высоты.
Я видел некоторые разговоры об этом на siggraph 2014, и хотя некоторые люди использовали методы, подобные IQ, некоторые делали вещи даже не так хорошо, как IQ, что было интересно посмотреть: P
источник
Пошаговое отображение конусов и релаксирующее отображение конусных шагов - очень неплохие алгоритмы. Они полагаются на предварительную обработку поля высоты для создания 2D-карты, используемой для более эффективного поиска.
http://www.lonesock.net/files/ConeStepMapping.pdf https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch18.html
источник