Raytracing w czasie rzeczywistym

13

Grałem z raytrachem w czasie rzeczywistym (i raymarching itp.), Ale nie spędziłem zbyt wiele czasu na raytracingu w czasie rzeczywistym - dla obrazów o wyższej jakości lub dla pre-renderowania filmów i tym podobnych.

Wiem, że jedną z powszechnych technik poprawy jakości obrazu w przypadku nierzeczywistym jest po prostu rzucenie DUŻO więcej promieni na piksel i uśrednienie wyników.

Czy są jakieś inne techniki, które wyróżniają się jako dobre sposoby poprawy jakości obrazu w przypadku nierealnym, w porównaniu do tego, co normalnie robisz w przypadku czasu rzeczywistego?

Alan Wolfe
źródło

Odpowiedzi:

9

Śledzenie ścieżek jest standardową techniką renderowania fotorealistycznego w czasie rzeczywistym i powinieneś przyjrzeć się w szczególności dwukierunkowemu śledzeniu ścieżek, aby uzyskać efekty takie jak kaustyka, których tak naprawdę nie można uzyskać przy użyciu podstawowego śledzenia ścieżek. Dwukierunkowe śledzenie ścieżki również zbiega się szybciej z prawdą gruntu, jak pokazano na poniższym obrazie: wprowadź opis zdjęcia tutaj Również transport świetlny Metropolis (MLT) jest bardziej zaawansowaną techniką śledzenia ścieżki, która zbliża się jeszcze szybciej do prawdy gruntowej poprzez mutowanie istniejących „dobrych” ścieżek: wprowadź opis zdjęcia tutaj

Możesz także użyć próbkowania ważności w celu szybszej konwergencji, skupiając więcej promieni na kierunkach, które mają większe znaczenie. Tj. Skupiając promienie oparte na BRDF (bardziej w kierunku piku BRDF za pomocą funkcji gęstości prawdopodobieństwa) lub na źródle światła, lub uzyskaj najlepszy z dwóch światów i stosując próbkowanie z wieloma ważnościami. wprowadź opis zdjęcia tutaj Chodzi o redukcję hałasu w sposób bezstronny. Istnieją również techniki usuwania szumów w celu dalszego zmniejszenia szumu na renderowanych obrazach. wprowadź opis zdjęcia tutaj

Myślę, że najlepiej jest najpierw wdrożyć podstawowy wskaźnik ścieżki Monte Carlo z brutalną siłą, aby służyć jako obiektywne źródło odniesienia, zanim przejdziemy do bardziej zaawansowanych technik. Łatwo jest popełniać błędy i wprowadzać promowanie, które pozostaje niezauważone, więc posiadanie prostej implementacji jest dobre, aby mieć je w celach informacyjnych.

Możesz również uzyskać naprawdę dobre wyniki, stosując śledzenie ścieżek do uczestniczących mediów, ale to działa bardzo wolno bardzo szybko: D wprowadź opis zdjęcia tutaj

JarkkoL
źródło
5

Jednym z dużych jest użycie konstrukcyjnej bryły geometrycznej zamiast siatek trójkątów. Przecięcia trójkąt-promień są szybsze niż prawie każde inne skrzyżowanie w kształcie promienia, ale do przybliżenia powierzchni cylindra lub torusa potrzeba ogromnej liczby trójkątów, nie wspominając o niektórych naprawdę egzotycznych kształtach, takich jak fraktale Julii lub uogólnione funkcje parametryczne, które obsługa niektórych rendererów.

Innym jest zastosowanie mapowania fotonów w czasie renderowania i obliczeń rozproszonych wzajemnych odbić : pozwala to uzyskać dokładne efekty świetlne w zmieniającej się scenie. W przypadku raytracingu w czasie rzeczywistym są one zbyt drogie do obliczenia, więc albo źródła światła, a główne elementy geometryczne muszą być nieruchome (aby umożliwić wstępne obliczenia), lub efekty są całkowicie pomijane.

znak
źródło
Powierzchnie podziału są wykorzystywane znacznie częściej niż konstrukcyjna bryła geometryczna. Nadal obejmują trójkąty (lub splajny).
3

Mimo że nie wiedziałem o śledzeniu ścieżki Monte Carlo, kiedy to napisałem, przypadkowo to opisałem. Jak na ironię, śledzenie ścieżki Monte Carlo to odpowiedź, której szukałem w tym czasie.

Naiwne śledzenie ścieżki Monte Carlo polega na ocenie czegoś zwanego równaniem renderowania w celu numerycznego rozwiązania wartości koloru piksela. Pobiera losowe próbki przez losowe drgania w pikselu (istnieją lepsze strategie próbkowania i filtrowanie: Jakie jest podstawowe uzasadnienie antyaliasingu przy użyciu wielu losowych próbek w pikselu? ), A także przez odbijanie się w losowych kierunkach, gdy promień uderza w powierzchnię .

Może to wymagać wielu próbek, aby dać dobre wyniki, a przy niewystarczającej liczbie próbek obraz będzie wyglądał hałaśliwie. Potrzeba 4 razy więcej próbek, aby zmniejszyć hałas o połowę. Czasy renderowania mogą być rzędu godziny za pomocą 8 nowoczesnych rdzeni procesora w celu uzyskania prostej sceny.

Istnieją bardziej zaawansowane techniki śledzenia ścieżki monte carlo, które pozwalają szybciej uzyskać lepsze obrazy, takie jak próbkowanie ważności lub odwracanie obrazu po jego renderowaniu.

Śledzenie ścieżki Monte Carlo może tworzyć fotorealistyczne obrazy i zapewnia wiele zaawansowanych funkcji renderowania tylko dlatego, że jest zgodne z prawami fizyki, a zatem daje realistyczne wyniki.

Możesz przeczytać więcej na ten temat tutaj: http://blog.demofox.org/2016/09/21/path-tracing-getting-started-with-diffuse-and-emissive/

Oto przykładowy obraz, którego renderowanie zajęło około godziny przy użyciu wszystkich 8 rdzeni procesora:

wprowadź opis zdjęcia tutaj

Alan Wolfe
źródło