Przez lata pojawiło się wiele artykułów na temat różnych technik rysowania terenu pola wysokościowego za pomocą raytracera. Niektóre algorytmy marszują sieć bezpośrednio (lub za pomocą kwadratu); inni przekształcają teren w siatkę wielokątów i używają standardowego testu przecięcia trójkąt promienisty. Badania wydają się być kontynuowane w ciągu ostatnich kilku lat i ciężko jest znaleźć artykuły napisane w ostatniej dekadzie, ale równowaga między pamięcią a obliczeniami (zarówno CPU, jak i GPU) wciąż się zmienia.
Jaki algorytm zapewnia obecnie najlepszą wydajność na wysokiej klasy komputerach stacjonarnych? Lub jeśli nie ma jednej odpowiedzi, czym różnią się charakterystyki wydajności obecnych najlepszych algorytmów?
raytracing
height-field
Dan Hulme
źródło
źródło
Odpowiedzi:
Aby zapoznać się z najnowszym stanem techniki, spójrz na ten artykuł: „Maximum Mipmaps for Fast, Accurate and Scalable Dynamic Height Rendering”, Tevs i in. 2008
Podstawową ideą jest pominięcie dużej ilości miejsca poprzez znajomość maksymalnej wartości na dużych obszarach terenu. Jeśli promień pozostaje powyżej tego, przejdź do następnego dużego obszaru.
Jeśli spojrzysz na rysunek 8, zobaczysz porównanie podstawowych kroków liniowych z maksymalnymi mipmapami. Stopień liniowy daje 200 kroków, które można wykonać w czasie rzeczywistym na nowoczesnym gpus, ale nadal jest on powolny. Max mipmapy robią to samo w około 10 krokach, wszystkie w shaderze.
źródło
Najlepsze, co osobiście widziałem, to rzeczy, które robi Inigo Quillez, które są używane w materiałach demonstracyjnych. Ray Maszeruj po terenie, robiąc większe kroki, im dalej od aparatu dostaniesz się, ponieważ (zwykle) szczegóły mają mniejsze znaczenie na odległość (wyjątek = cienkie ściany!) Używa informacji o penetracji i innych łatwo dostępnych danych do symulacji okluzji otoczenia i innych zaawansowanych technik oświetleniowych.
Oto prezentacja rzeczy w akcji: https://www.youtube.com/watch?v=_YWMGuh15nE
A tutaj jest strona IQ na temat raymarchingu terenu, który jest dość interesującym lekturą: http://www.iquilezles.org/www/articles/terrainmarching/terrainmarching.htm
BTW, we współczesnych grach technika „odbicia przestrzeni ekranu” często jest tylko marszem promiennym na bufor Z renderowanej sceny. Bufor Z jest tak naprawdę tylko polem wysokości.
Widziałem kilka rozmów na ten temat na siggraph 2014 i chociaż niektórzy ludzie używali podobnych technik jak IQ, niektórzy robili rzeczy nawet nie tak dobrze jak IQ, co było interesujące: P
źródło
Mapowanie stożka i zrelaksowane mapowanie stożka wydają się być bardzo przyzwoitymi algorytmami. Opierają się one na odrobinie wstępnego przetwarzania pola wysokości, aby utworzyć mapę 2D używaną do bardziej wydajnego wyszukiwania.
http://www.lonesock.net/files/ConeStepMapping.pdf https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch18.html
źródło