RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Podobne dokumenty
Grafika realistyczna. Oświetlenie globalne ang. global illumination. Radosław Mantiuk

Śledzenie promieni w grafice komputerowej

WSTĘP DO GRAFIKI KOMPUTEROWEJ

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Synteza i obróbka obrazu. Algorytmy oświetlenia globalnego

Algorytmy oświetlenia globalnego

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

a. Czym różni się sposób liczenia odbicia zwierciadlanego zaproponowany przez Phonga od zaproponowanego przez Blinna?

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Architektura komputerów

Karty graficzne możemy podzielić na:

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Zaawansowana Grafika Komputerowa

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Plan wykładu. Akcelerator 3D Potok graficzny

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Animowana grafika 3D. Opracowanie: J. Kęsik.

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Programowanie współbieżne Wykład 2. Iwona Kochańska

Przetwarzanie Równoległe i Rozproszone

Programowanie procesorów graficznych GPGPU

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

i3: internet - infrastruktury - innowacje

Julia 4D - raytracing

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

Grafika komputerowa. Obraz w informatyce

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Dr inż. hab. Siergiej Fialko, IF-PK,

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Nowoczesne technologie przetwarzania informacji

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

Przestrzenie 3D (algorytmy renderingu)

Grafika komputerowa i wizualizacja

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Przestrzenie 3D (algorytm rendering y u)

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Rok akademicki: 2017/2018 Kod: JFM s Punkty ECTS: 7. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Technologie Informacyjne

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Wstęp do astrofizyki I

Algorytmy renderingu dla programowalnych jednostek graficznych. prof. dr hab. inż. Maria Pietruszka mgr inż. Dominik Szajerman

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Gry komputerowe: efekty specjalne cz. 2

Numeryczna algebra liniowa

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Podstawy Informatyki. Metody dostępu do danych

Filtrowanie tekstur. Kinga Laurowska

Algorytmy i struktury danych. wykład 5

Architektura Komputerów

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Architektura komputerów

HDR. Obrazy o rozszerzonym zakresie dynamiki

Moc płynąca z kart graficznych

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Intro 4kb. sphere tracing. Maciej Matyka (maq / floppy) Dla koła naukowego Voxel

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Praca dyplomowa magisterska

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Obliczenia Wysokiej Wydajności

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Tadeusz Pankowski

Architektura systemów komputerowych Ćwiczenie 3

Analiza efektywności przetwarzania współbieżnego

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Grafika Komputerowa Wykład 1. Wstęp do grafiki komputerowej Obraz rastrowy i wektorowy. mgr inż. Michał Chwesiuk 1/22

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

Algorytmy i Struktury Danych

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

Grafika Komputerowa. Metoda śledzenia promieni

Obliczenia Wysokiej Wydajności

Budowa Mikrokomputera

Modelowanie terenu na bazie symulacji erozji z wykorzystaniem deformowalnych wokseli

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Opis efektów kształcenia dla modułu zajęć

GRK 4. dr Wojciech Palubicki

Tesla. Architektura Fermi

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

Modelowanie niezawodności prostych struktur sprzętowych

Architektura mikroprocesorów TEO 2009/2010

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

Animowana grafika 3D. Opracowanie: J. Kęsik.

Struktury Danych i Złożoność Obliczeniowa

Analiza wyników matury 2017 z matematyki. Mieczysław Fałat OKE we Wrocławiu

WYMAGANIA Z WIEDZY I UMIEJĘTNOŚCI NA POSZCZEGÓLNE STOPNIE SZKOLNE DLA KLASY CZWARTEJ H. zakres rozszerzony. Wiadomości i umiejętności

Budowa komputera Komputer computer computare

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

1. Potęgi. Logarytmy. Funkcja wykładnicza

Transkrypt:

RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski

Plan wykładu Interaktywne śledzenie promieni wprowadzenie Porównanie śledzenia promieni i renderingu opartego o raster Algorytmy śledzenia promieni Algorytm rekurencyjny Whitteda Śledzenie ścieżek Algorytmy dwukierunkowe Mapowanie fotonów

Plan wykładu c.d. Struktury przyspieszające Regularne siatki Drzewa kd CUDA i OpenCL Równoległe śledzenie promieni Zastosowanie wielordzeniowych CPU Zastosowanie GPU Współpraca CPU i GPU

Literatura T. Whitted, An improved illumination model for shaded display, Communications of the ACM 1980 J. T. Kajiya, The rendering equation, SIGGRAPH 1986 E. Veach, L. Guibas, Optimally Combining Sampling Techniques for Monte Carlo Rendering, SIGGRAPH 1995 H. W. Jensen, Realistic Image Synthesis Using Photon Mapping, AK Peters 2001

Literatura c.d. V. Havran, Heuristic Ray Shooting Algorithms, PhD Thesis, 2000 T. J. Purcell i inni, Ray Tracing on Programmable Graphics Hardware, SIGGRAPH 2002 S. Popov i inni, Stackless KD-Tree Traversal for High Performance GPU Ray Tracing, Eurographics 2007 D. Luebke, S. Parker, Interactive Ray Tracing with CUDA, NVISION 2008

Interaktywne śledzenie promieni wprowadzenie Rasterization is fast but need cleverness to support complex visual effects Ray tracing supports complex visual effects but need cleverness to be fast Ray tracing is the technology of the future and it always will be!

Interaktywne śledzenie promieni wprowadzenie

Interaktywne śledzenie promieni wprowadzenie Śledzenie promieni pozwala w prosty i przejrzysty sposób symulować dowolne zjawiska optyczne z zakresu optyki geometrycznej Nie są potrzebne żadne chwyty i sztuczki stosowane przy renderingu rastrowym Sztuczki takie na ogół nie działają bezbłędnie Scena w ruchu, renderowana przy ich pomocy sprawia wrażenie poprawnie wygenerowanej Ale przy spojrzeniu na pojedyncze klatki, szczególnie w wysokiej rozdzielczości, niedociągnięcia są rażące

Interaktywne śledzenie promieni wprowadzenie Efekty, które można łatwo otrzymać przy śledzeniu promieni, a które są bardzo trudne, albo nieosiągalne w grafice rastrowej to m.in.: Obiekty połyskliwe, lustra, szkło Cienie o rozmytych krawędziach Oświetlenie pośrednie Obiekty półprzeźroczyste Rozpraszanie światła w obiektach wolumetrycznych Głębia ostrości

Interaktywne śledzenie promieni wprowadzenie

Interaktywne śledzenie promieni wprowadzenie Niestety, śledzenie promieni jest znacznie wolniejsze niż rendering rastrowy Oba podejścia mają w typowym przypadku złożoność logarytmiczną względem rozmiaru sceny (ilości prymitywów) Clog(n) Śledzenie promieni ma jednak dużo większą stały współczynnik C Powoduje to istotne trudności w uzyskaniu interaktywności (kilka-kilkanaście Hz), a tym bardziej renderingu w czasie rzeczywistym (ok. 60Hz)

Porównanie algorytmów Obecnie interaktywne śledzenie promieni wygrywa z algorytmem rastrowym pod względem możliwych do symulowania zjawisk optycznych Niestety, aby zrównoważyć braki w wydajności, sceny muszą być znacznie prostsze W ogólnym rozrachunku do renderingu w czasie rzeczywistym współcześnie lepszy jest algorytm rastrowy

Porównanie algorytmów Jednak w przyszłości prawdopodobnie się to zmieni Obecnie przy odpowiednio długim dostępnym czasie na rendering ramki śledzenie promieni zapewnia wyraźnie lepszą jakość grafiki, niż algorytm rastrowy Wraz ze wzrostem dostępnej mocy obliczeniowej kolejnych generacji komputerów czas ten staje się coraz mniejszy prawdopodobnie będzie niedługo czasem rzeczywistym

Algorytmy śledzenia promieni Algorytmy śledzenia promieni nie są nowe Pierwsza publikacja powstała w 1980r. Stosowane były jeszcze wcześniej Przez ponad 30 lat znacznie poprawiono zarówno ich możliwości jak ich wydajność Obecnie potrafią one obliczyć dowolne zjawisko oparte o optykę geometryczną Stosowane są efektywne struktury przyspieszające, w połączeniu z renderingiem równoległym

Algorytm rekurencyjny Whitteda Śledzenie promieni od kamery w kierunku sceny Rekurencyjne śledzenie promieni odbitych od powierzchni idealnie odbijających i idealnie załamujących światło Testy widoczności pomiędzy światłami punktowymi a cieniowanymi punktami na powierzchniach niepołyskliwych

Algorytm rekurencyjny Whitteda

Algorytm rekurencyjny Whitteda Symuluje tylko i wyłącznie odbicia idealne Cienie nie mają miękkich krawędzi dostępne są wyłącznie światła punktowe W przypadku powierzchni odbijających i załamujących światło występuje śledzenie drzewa promieni Jeżeli takich obiektów na scenie jest dużo, to drzewo to jest mocno rozgałęzione bardzo słaba wydajność algorytmu

Śledzenie ścieżek Równanie całkowe opisujące bilans energetyczny sceny w funkcji źródeł światła, danych geometrycznych i materiałów Rozwiązanie za pomocą śledzenia ścieżek (kolejnych promieni) światła od kamery do źródeł Ścieżki zastępują drzewa Odbicia w losowych kierunkach Algorytm statystyczny, estymowana wartość oczekiwana oświetlenia przybliża wynik całkowania

Śledzenie ścieżek

Śledzenie ścieżek Umożliwia rendering dowolnego zjawiska opartego o optykę geometryczną Problemem jest słaba wydajność Obrazki są mocno zaszumione Aby usunąć szum, trzeba prześledzić bardzo wiele ścieżek, co może zająć nawet wiele godzin Szczególnie problematyczne są powierzchnie połyskliwe blisko źródeł światła i światła częściowo zasłonięte przez obiekty na scenie

Śledzenie ścieżek

Algorytmy dwukierunkowe Śledzenie promieni od kamery i od źródeł światła Algorytm znacznie bardziej odporny na tzw. Trudne przypadki niż zwykłe śledzenie ścieżek, w kierunku od kamery do źródeł światła W wersji podstawowej techniki te są wciąż zbyt powolne, aby mogły być stosowane w czasie rzeczywistym

Algorytmy dwukierunkowe

Algorytmy dwukierunkowe

Mapowanie fotonów Rendering dwuprzebiegowy W pierwszym przebiegu budowa tzw. mapy fotonów Śledzenie promieni od źródeł światła w kierunku sceny, uwzględnienie wielokrotnych odbić Zapamiętanie danych w punktach ich przecięć z obiektami W drugim przebiegu rendering z wykorzystaniem mapy fotonów zamiast źródeł światła

Mapowanie fotonów

Mapowanie fotonów Obecnie, po zastosowaniu różnorodnych optymalizacji, jedna z najlepszych technik tego typu Często implementowane na GPU, najlepiej do tego celu nadaje się CUDA albo OpenCL Może być stosowane w czasie rzeczywistym, zarówno w wersjach na wielordzeniowe CPU jak i GPU, jednak sceny muszą być odpowiednio proste

Struktury przyspieszające Najdroższą operacją we wszystkich algorytmach śledzenia promieni jest znajdowanie przecięć promieni z geometrią sceny Dobry algorytm śledzenia promieni ogranicza ilość promieni niezbędną do osiągnięcia zadanej jakości grafiki Ale tylko to niewiele pomoże jeżeli samo szukanie przecięcia promieni jest nieefektywne Konieczność stosowania specjalizowanych struktur przyspieszających

Struktury przyspieszające Takie zorganizowanie przechowywanych danych sceny, aby pojedynczymi krokami odrzucać z dalszych obliczeń duże ilości geometrii znajdującej się daleko od śledzonego promienia Możliwość osiągnięcia średniej złożoności logarytmicznej względem ilości prymitywów, zamiast złożoności liniowej prostego sprawdzenia wszystkich figur

Regularne siatki Podział całej sceny na jednakowe prostopadłościenne bloki Każdy blok ma wskaźniki na figury, które częściowo albo całkowicie się w nim zawierają Szukanie najbliższego punktu przecięcia sprowadza się do przeglądnięcia figur z bloków znajdujących się na drodze promienia Przeglądanie bloków jest wykonywane w kolejności zgodnej z kierunkiem promienia

Regularne siatki Siatki takie są bardzo proste i szybkie w budowie Przeglądanie jest efektywne tylko wtedy, gdy rozmieszczenie figur jest w przybliżeniu jednorodne na całej scenie Pojedyncze, szczegółowo modelowane obiekty, znajdujące się na względnie dużej scenie, wraz z innymi obiektami o znacznie większych prymitywach, w całości trafiają do pojedynczych bloków, psując wydajność

Drzewa kd Ograniczenie całej sceny prostopadłościanem Rekurencyjny podział sceny na dwie połowy, w poprzek najdłuższej osi prostopadłościanu Figury, które znalazły się na płaszczyźnie podziału trafiają do obu połówek Podział jest przerywany, jeżeli w scenie jest mniej figur, niż z góry zadana wartość (zwykle kilka), albo gdy ilość podziałów przekroczy pewien próg

Drzewa kd

Drzewa kd Przeszukiwanie drzewa polega na przeglądaniu węzłów w poszukiwaniu najbliższego punktu przecięcia Przegląd zaczyna sie od korzenia, a do węzłów potomnych wchodzi się tylko, gdy promień je przecina Jeżeli promień przecina oba węzły potomne, to najpierw należy przeszukać pierwszy węzeł na drodze promienia

Drzewa kd W przeciwieństwie do regularnych siatek, drzewa automatycznie dostosowują się do niejednorodności w rozkładzie geometrii na scenie Poprzez odrzucanie wysoko poziomowych węzłów można w jednym kroku pominąć o wiele większą ilość geometrii, niż pozwalałaby na to regularna siatka Przeszukiwanie drzew jest szybsze, niż przeszukiwanie siatek, ale ich konstrukcja jest wolniejsza

CUDA i OpenCL Są to środowiska do programowania kart graficznych w języku zbliżonym do C/C++ OpenCL (Open Computing Language) jest otwartym standardem, dostępnym na kartach zarówno Nvidii jak i ATI/AMD CUDA (Compute Unified Device Architecture) dostępna jest tylko na kartach Nvidia od serii 8xxx wzwyż

CUDA i OpenCL Dostosowane są one do rozwiązań sprzętowych we współczesnych kartach graficznych Lepsze do obliczeń ogólnego przeznaczenia niż GLSL i HLSL Model przetwarzania równoległego oparty o jądra (ang. kernels) Wątki i grupy wątków Architektura SIMD Pamięć lokalna i globalna

Równoległe śledzenie promieni Podobnie jak rendering rastrowy, śledzenie promieni można wykonywać równolegle Jest to konieczne, aby osiągnąć interaktywność Równolegle można liczyć fragmenty obrazu, pojedyncze ścieżki, a nawet śledzić indywidualne promienie Nieco trudniejsza jest równoległa budowa mapy fotonów, ale też jest możliwa do realizacji

Równoległe śledzenie promieni Równoległe śledzenie promieni można realizować przy pomocy wielordzeniowych CPU, maszyn wieloprocesorowych albo kart graficznych Rendering jednej klatki na wielu maszynach połączonych w sieć jest nieopłacalny Nie ma zgody co do stwierdzenia, czy do śledzenia promieni lepiej nadaje się CPU czy GPU Oba rozwiązania mają swoje zalety i wady

Zastosowanie wielordzeniowych CPU CPU pozwala wykonać w efektywny sposób dowolny algorytm Jeżeli algorytm zawiera względnie dużo obliczeń arytmetycznych, a stosunkowo niewiele rozgałęzień warunkowych i odczytów danych z różnych obszarów pamięci, to GPU jest efektywniejsze w realizacji takiego algorytmu Głównym kosztem śledzenia promieni jest przeszukiwanie drzew, co sugerowałoby zastosowanie CPU

Zastosowanie wielordzeniowych CPU

Zastosowanie GPU Przy odpowiedniej modyfikacji algorytmów, śledzenie promieni można efektywnie wykonywać na GPU Dotyczy to głównie grupowania promieni o podobnych kierunkach w wiązki, i śledzenie wiązek promieni Niestety psuje to własności statystyczne algorytmów, z punktu widzenia statystyki najlepiej jest promienie jak najbardziej rozpraszać Można też zastosować rendering rastrowy, efektywnie skracając o 1 długość wszystkich ścieżek

Zastosowanie GPU

Współpraca CPU i GPU CPU i GPU są optymalizowane pod kątem różnych algorytmów Być może lepsze byłoby zastosowanie optymalnego procesora do konkretnego zadania Podział śledzenia promieni na algorytm podstawowy, generujący strumień próbek wyjściowych, w przestrzeni ekranu i konwersje tych próbek na obraz w formacie 24bit RGB Pierwsze zadanie CPU, drugie GPU Problematyczne równoważenie obciążeń

Dziękuję za uwagę