Який сучасний алгоритм сучасних полів висоти полів?


16

Протягом багатьох років було написано багато робіт з різних технік малювання місцевості по висоті в рельєсі. Деякі алгоритми проміняють сітку безпосередньо (або через квадратик); інші перетворюють місцевість у багатокутну сітку та використовують стандартний тест перетину променів трикутника. Дослідження, здається, продовжилися в останні кілька років, і важко знайти документи, написані за останнє десятиліття, але баланс між пам'яттю та обчисленням (як процесором, так і графічним процесором) все ще змінюється.

Який алгоритм дає найкращі показники роботи на настільних верстатах високого класу? Або якщо немає однозначної відповіді, чим відрізняються продуктивні характеристики поточних найкращих алгоритмів?


Екранно-просторові відображення: створіть поле висоти за допомогою буфера глибини та кадру, проміньте промінь, щоб отримати грубі відбиття. Я не знаю про деталі, але я б уявив, що Crysis, Killzone, останнім часом Frostbite і т.д. будуть використовувати деякі складні методи, щоб швидко його отримати. Ви заглядали в це?
Девід Курі

1
@DavidKuri Спасибі, це хороший вказівник щодо того, як швидко отримати основний промінь. Потрібно багато оптимізацій для більш статичного поля висоти, яке не так добре працює при відстеженні простору на екрані, як, наприклад, міп-карти попереднього обчислення чи квадратик мінімуму, тому я все ще сподіваюся на відповідь що охоплює це.
Dan Hulme

Ей, Ден BTW, ти шукаєш рішення для процесора чи графічного процесора? І візуалізація в режимі реального часу чи не в реальному часі?
Алан Вулф

@AlanWolfe Моє використання - це графічний процесор і не в режимі реального часу (тобто максимальна пропускна здатність, а не найкраща якість зображення, яким ви можете керувати за 16 мс), але я все одно прихиляю цікаві відповіді, які швидкі в процесорі або в першу чергу для інтерактивних рендерів.
Dan Hulme

Ви можете спробувати створити підписане поле відстані від карти висоти. Це в основному 3d текстура, яка зберігає відстань до наступної поверхні. Це дозволяє «швидше подорожувати промінь». Unreal Engine 4 використовує це для оклюзії навколишнього середовища, м'яких тіней та тіней місцевості загалом
користувач1888

Відповіді:


12

Для поточного стану сучасних технологій шукайте цю статтю: "Максимальні картки для швидкого, точного та масштабованого відображення динамічної висоти поля", Tevs та ін. 2008 рік

Основна ідея - пропустити багато місця, маючи знання про максимальне значення на великих ділянках місцевості. Якщо промінь залишається вище, перейдіть до наступної великої площі.

Якщо ви подивитесь на малюнок 8, ви побачите порівняння основних лінійних крокових та максимальних мапп. Лінійний кроковий результат призводить до 200 кроків, які можна зробити в режимі реального часу на сучасних gpus, але насправді все ще повільно. Мак-мапи роблять те ж саме за 10 кроків, все в шейдері.


Я приймаю цю відповідь, тому що сам документ є хорошим, і його розділ "Пов'язані роботи" здається досить вичерпним. Навіть якщо я не закінчую використовувати цю техніку точно, я впевнений, що зможу підготувати щось для мого використання із цього та його посилань.
Dan Hulme

Чи знайшли ви демо-версії з максимальними картами? Спасибі.
raRaRa

Я не читав статтю, але ця "максимальна карта" звучить дуже схоже на техніку, що використовується для конусного крокового картографування (що покращує картування оклюзії паралакса, пропускаючи великі площі завдяки конусам).
Жульєн Герто

@JulienGuertault Я б сказав, що це звичайна калька HiZ. це безпечний метод, щоб бути впевненим у тому, що вдарило. Але не дуже швидко порівняно з небезпечними методами, такими як двійковий пошук.
v.oddou

4

Найкраще, що я особисто бачив - це матеріал 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


1
Алгоритм у вашому посиланні дуже простий. Це виглядає менш витончено, ніж деякі статті, які я знайшов із дев'яностих. Це виглядає як гарна відправна точка, але я сподіваюся на найефективніше рішення для виробничої системи, а не просто "мого першого просвітника".
Dan Hulme

Цей матеріал використовується в відображенні демосценного коду та екрану у найсучасніших сучасних іграх. Найшвидший код іноді найпростіший. Я б не відхиляв це через його простоту. Буде цікаво дізнатися, чи отримуєте ви будь-які інші відповіді.
Алан Вулф

2
Чого не вистачає у вашій відповіді, це те, що IQ використовує стандартну сітку висотних полів як початкову здогадку, щоб приступити до реального пошуку реального місцевості. Спочатку він рендерує низькополімерну версію місцевості, використовуючи стандартну растерізацію, а потім запускає піксельний шейдер над зображенням, який починає рейммархізувати на глибині растеризації за мінусом деякого консервативного порогу. Це єдиний спосіб реально зробити це в реальному часі.
Бенедікт Біттерлі

Я вважаю, що лише частина сказаного є правдою. він використовує евристику, засновану на висоті місцевості (разом з відстані від камери), щоб придумати, наскільки далеко може пройти промінь, але, наскільки я чув, він не використовує растеризації. Ось приклад його роботи, який не використовує растерізацію, але це не означає, що не існує реалізацій, які DO використовують растерізацію: shadertoy.com/view/MdX3Rr
Алан Вулф

Я трохи розгублений, що питання стосується трасування променів, і ця відповідь стосується проходження променів. Існує принципова різниця між ними та тим, що вони можуть досягти.
Жюльєн Герто

4

Картографування кроків конуса та розслаблене зіставлення кроків конуса представляються дуже пристойними алгоритмами. Вони покладаються на деяку попередню обробку поля висоти, щоб створити 2D карту, яка використовується для більш ефективного пошуку.

http://www.lonesock.net/files/ConeStepMapping.pdf https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch18.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.