Od czasu ogłoszenia przez Nvidię w 2018 r. 20-serii kart graficznych RTX, jej zabójcza funkcja „śledzenie promieni” jest popularnym terminem w kręgach gier wideo. Ale może być trudno zrozumieć, czym jest ray tracing, jak działa i dlaczego wygląda lepiej niż poprzednie techniki.
Co to jest ray tracing i jak działa?
W prawdziwym świecie, kiedy coś widzisz, widzisz foton ze źródła światła. W drodze do ciebie ten foton mógł zostać odbity od jednej lub więcej powierzchni. Każde odbicie zmienia charakterystykę światła, które dociera do twoich oczu.
Słońce emituje szeroką gamę barw światła, każda powierzchnia pochłania część światła, a część odbija. To, co widzimy jako zieloną powierzchnię, taką jak liść, wydaje się tak wyglądać, ponieważ odbija głównie zielone światło. Jeśli światło odbijające się od liścia pada na inną powierzchnię, taką jak biała ściana, wówczas ta powierzchnia będzie wyglądać nieco inaczej niż gdyby świeciło na nią czysto białe światło. Każde odbicie wpływa na każdą przyszłą powierzchnię, z którą światło będzie oddziaływać, zmieniając jej intensywność i widoczny kolor.
Ray tracing to technika graficzna działająca według tych samych zasad. Rzutowane są promienie światła, obliczane są właściwości światła odbitego i załamanego, takie jak kolor, a promień dalej się porusza.
W prawdziwym świecie każde źródło światła, takie jak żarówka czy Słońce, emituje fotony we wszystkich kierunkach, z których zdecydowana większość nigdy nie dociera do oczu. Symulacja tego byłaby szalenie intensywnym procesem, który daje w większości zmarnowane wyniki. Aby zmniejszyć obciążenie pracą, ray tracing działa odwrotnie, wyświetlając promienie z kamery. Każdy promień może przebyć określoną odległość bez odbicia lub odbić określoną liczbę razy przed wykonaniem obliczeń i ustawieniem wartości piksela.
Na przykład promień rzucany jest z perspektywy widza, kiedy uderza w białą ścianę, algorytm rekursywnie generuje odbity promień, który następnie przechodzi przez taflę niebieskiego szkła, w końcu odbity promień uderza w białe źródło światła i jest zaabsorbowany. Niebieskie szkło pochłania wszystko oprócz niebieskiego światła, które rzuca niebieskie światło na ścianę, co powoduje, że piksel jest zabarwiony na niebiesko.
Dlaczego Ray Tracing wygląda o wiele lepiej?
Standardowa metoda renderowania scen w czasie rzeczywistym obejmuje użycie wstępnie obliczonych lightmap i oświetlenia całej sceny. Niektóre gry wykorzystują ograniczone oświetlenie wolumetryczne, aby uwzględnić ruchome źródła światła i umożliwić dynamiczne cienie, ta technika jest jednak używana oszczędnie, ponieważ jest dość intensywna dla procesora.
Ray tracing może osiągnąć fotorealistyczny efekt, jeśli na etapie projektowania gry zostanie wykonana dodatkowa praca. Jeśli wszystkie powierzchnie zawierają szczegóły, takie jak współczynnik odbicia, przezroczystość i sposób, w jaki światło będzie przez nie załamywać, ogólny efekt może wyglądać bardziej naturalnie. Chociaż takie podejście wymaga oczywiście więcej pracy na etapie projektowania gry, pozwala na pojawienie się wyniku fotorealistyczny ze światłem reagującym tak, jak powinno, gdy odbija się od betonu, metalu, drewna i szkła itp.
Śledzenie promieni umożliwia rzucanie dokładnych odbić i cieni w ramach procesu renderowania. w tradycyjnych metodach renderowania oba te efekty są całkowicie opcjonalne i mogą powodować znaczne spadki wydajności.
Sam ray tracing to ogromny hit wydajności. Dopóki nie ogłoszono kart graficznych Nvidii RTX z akceleracją sprzętową do ray tracingu, myślano o tym że moc obliczeniowa niezbędna do wykonywania ray tracingu w czasie rzeczywistym w oprogramowaniu wynosiła ponad dekadę z dala. Nawet przy akceleracji sprzętowej ray tracing nadal powoduje znaczny spadek wydajności, ponieważ nadal jest najwolniejszą częścią renderowania klatki.