Co to jest Ray Marching? Czy śledzenie sfery jest tym samym?
31
Wiele wersji demonstracyjnych ShaderToy wykorzystuje algorytm Ray Marching do renderowania sceny, ale często są napisane w bardzo zwartym stylu i nie mogę znaleźć żadnych prostych przykładów ani wyjaśnień.
Czym więc jest Ray Marching? Niektóre komentarze sugerują, że jest to odmiana śledzenia sfery. Jakie są obliczeniowe zalety takiego podejścia?
Należą one do tej samej rodziny solverów, w których śledzenie sfery jest jedną z metod marszu promiennego, którą jest nazwisko rodowe.
Raymarching definicji
Raymarching to technika nieco podobna do tradycyjnego raytracingu, w której funkcja powierzchni nie jest łatwa do rozwiązania (lub niemożliwa bez numerycznych metod iteracyjnych). W raytracingu po prostu patrzysz na skrzyżowanie promienia, podczas gdy w marszu promiennym maszerujesz do przodu (lub tam iz powrotem), aż znajdziesz skrzyżowanie, masz wystarczającą ilość próbek lub cokolwiek, co próbujesz rozwiązać. Spróbuj pomyśleć o tym jak o metodzie Newtona-Raphsona w celu znalezienia powierzchni lub sumowaniu w celu zintegrowania różnych funkcji.
Może to być przydatne, jeśli:
Trzeba renderować wolumetryczne, które nie są jednolite
Renderowanie funkcji niejawnych, fraktali
Renderowanie innych rodzajów powierzchni parametrycznych, w których przecięcie nie jest wcześniej znane, takich jak odwzorowanie paralaksy
Itp
Zdjęcie 1 : Tradycyjne marszowanie promieniowe w celu znalezienia powierzchni
Śledzenie sfery jest jednym z możliwych algorytmów marszu Ray. Nie wszystkie metody raymarchingu korzystają z tej metody, ponieważ nie można ich przekształcić w tego rodzaju schemat.
Śledzenie sfery służy do renderowania niejawnych powierzchni . Niejawne powierzchnie powstają na pewnym poziomie funkcji ciągłej. W istocie rozwiązanie równania
F(X,Y,Z) = 0
Ze względu na to, jak tę funkcję można rozwiązać w każdym punkcie, można przejść do przodu i oszacować największą możliwą sferę, która może zmieścić się w bieżącym kroku marszu (lub jeśli nie całkiem rozsądnie bezpiecznie). Wiesz wtedy, że następny marsz jest co najmniej tak duży. W ten sposób można uzyskać kroki adaptacyjnego marszu promiennego, które przyspieszają proces.
Zdjęcie 2 : Śledzenie sfery * w akcji zwróć uwagę na to, jak wielkość kroku jest adaptacyjna
Marszowanie promienia jest iteracyjnym testem przecięcia promienia, w którym przechodzisz wzdłuż promienia i testujesz skrzyżowania, zwykle używane do znajdowania skrzyżowań o stałej geometrii, w których testy wewnątrz / na zewnątrz są szybkie.
Ustalony rozmiar kroku jest dość powszechny, jeśli naprawdę nie masz pojęcia, gdzie może wystąpić skrzyżowanie, ale czasami zamiast tego stosowane są metody wyszukiwania root, takie jak wyszukiwanie binarne lub secant. Często do znalezienia pierwszego skrzyżowania używany jest stały rozmiar kroku, a następnie wyszukiwanie binarne. Najpierw natknąłem się na marsz ray w technikach mapowania przemieszczeń na piksel. Mapowanie płaskorzeźby detali powierzchni o powierzchni innej niż wysokość to dobra lektura!
Jest powszechnie stosowany w przypadku przeskakiwania przestrzeni, techniki przyspieszania, w której niektóre przetwarzanie wstępne zapewnia bezpieczną odległość, którą można przesuwać wzdłuż promienia bez przecinania się geometrii, lub jeszcze lepiej, bez przecinania się, a następnie opuszczania geometrii, aby ją przegapić. Na przykład mapowanie kroku stożka i zrelaksowane mapowanie kroku stożka.
Śledzenie sfery może odnosić się do niejawnego testu przecięcia sfery promieniowej, ale jest to także nazwa techniki przeskakiwania przestrzeni przez Johna Harta, jak wspomina @joojaa, i używana przez Williama Donnelly'ego ( mapowanie przesunięcia piksela z funkcjami odległości ), gdzie Tekstura 3D koduje promienie kul, w których nie ma geometrii.
Ha, proszę bardzo, robienie zdjęć innym osobom jest bardziej wydajne niż ich samodzielne rysowanie.
joojaa,
@joojaa Tak, szybciej, jeśli pamiętasz, gdzie oni byli, ale bez tego satysfakcjonującego uczucia robienia tego samemu: P. Mam też ten głupi błąd renderowania subpikseli w chromie, więc tekst jest kolorowy.
jozxyqk,
1
Cóż, renderowanie subpikseli jest czymś, o co nie pytano. Jeszcze.
Marszowanie promienia jest iteracyjnym testem przecięcia promienia, w którym przechodzisz wzdłuż promienia i testujesz skrzyżowania, zwykle używane do znajdowania skrzyżowań o stałej geometrii, w których testy wewnątrz / na zewnątrz są szybkie.
Obrazy z geometrii renderowania z teksturami reliefowymi
Ustalony rozmiar kroku jest dość powszechny, jeśli naprawdę nie masz pojęcia, gdzie może wystąpić skrzyżowanie, ale czasami zamiast tego stosowane są metody wyszukiwania root, takie jak wyszukiwanie binarne lub secant. Często do znalezienia pierwszego skrzyżowania używany jest stały rozmiar kroku, a następnie wyszukiwanie binarne. Najpierw natknąłem się na marsz ray w technikach mapowania przemieszczeń na piksel. Mapowanie płaskorzeźby detali powierzchni o powierzchni innej niż wysokość to dobra lektura!
Jest powszechnie stosowany w przypadku przeskakiwania przestrzeni, techniki przyspieszania, w której niektóre przetwarzanie wstępne zapewnia bezpieczną odległość, którą można przesuwać wzdłuż promienia bez przecinania się geometrii, lub jeszcze lepiej, bez przecinania się, a następnie opuszczania geometrii, aby ją przegapić. Na przykład mapowanie kroku stożka i zrelaksowane mapowanie kroku stożka.
Śledzenie sfery może odnosić się do niejawnego testu przecięcia sfery promieniowej,ale jest to także nazwa techniki przeskakiwania przestrzeni przez Johna Harta, jak wspomina @joojaa, i używana przez Williama Donnelly'ego ( mapowanie przesunięcia piksela z funkcjami odległości ), gdzie Tekstura 3D koduje promienie kul, w których nie ma geometrii.źródło