Julia 4D - raytracing



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

Zaawansowana Grafika Komputerowa

która metoda jest najlepsza

Plan wykładu. Akcelerator 3D Potok graficzny

Symulacje komputerowe

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

GRK 4. dr Wojciech Palubicki

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

Śledzenie promieni w grafice komputerowej

Sphere tracing: integracja z klasycznymi metodami symulacji i renderingu

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

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

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

Oświetlenie obiektów 3D

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Przegląd architektury PlayStation 3

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

Filtrowanie tekstur. Kinga Laurowska

Obraz cyfrowy. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

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

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

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

Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

OpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23

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

Język ludzki kod maszynowy

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Implementacja filtru Canny ego

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

MMX i SSE. Zbigniew Koza. Wydział Fizyki i Astronomii Uniwersytet Wrocławski. Wrocław, 10 marca Zbigniew Koza (WFiA UWr) MMX i SSE 1 / 16

FRAKTALE. nie tworzą się z przypadku. Są tworzone naturalnie przez otaczającą nas przyrodę, bądź za pomocą

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

Grafika komputerowa i wizualizacja

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Teselacja i uzupełnienia do grafiki

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

ODPOWIEDZI I SCHEMAT PUNKTOWANIA ZESTAW NR 2 POZIOM PODSTAWOWY. Etapy rozwiązania zadania

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Algebra WYKŁAD 3 ALGEBRA 1

Podłączanie bibliotek Zapis danych do pliku graficznego Generowanie promienia pierwotnego Import sceny z pliku Algorytm ray tracingu

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

CUDA. cudniejsze przyk ady

zajęcia 1. Bartosz Górski, Tomasz Kulczyński, Błażej Osiński

Kompresja sekwencji obrazów - algorytm MPEG-2

Architektura Procesorów Graficznych

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA III ZAKRES ROZSZERZONY (90 godz.) , x

Grafika komputerowa. Model oświetlenia. emisja światła przez źródła światła. interakcja światła z powierzchnią. absorbcja światła przez sensor

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

FRAKTALE I SAMOPODOBIEŃSTWO

Obraz jako funkcja Przekształcenia geometryczne

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

IX. Wskaźniki.(3 godz.)

Programowanie procesorów graficznych GPGPU

Fraktale deterministyczne i stochastyczne. Katarzyna Weron Katedra Fizyki Teoretycznej

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

EGZAMIN MATURALNY Z INFORMATYKI

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. Grafika Komputerowa, Informatyka, I Rok

Gry komputerowe, Informatyka N1, III Rok

Lista. Algebra z Geometrią Analityczną. Zadanie 1 Przypomnij definicję grupy, które z podanych struktur są grupami:

Uwaga! Upadek! Opis zadania konkursowego

OpenGL i wprowadzenie do programowania gier

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Analiza obrazów - sprawozdanie nr 2

Wprowadzenie do UML, przykład użycia kolizja

Obliczenia Wysokiej Wydajności

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

Trójwymiarowa wizualizacja danych przestrzennych

WIZUALIZACJA TRÓJWYMIAROWYCH PÓL SKALARNYCH Z WYKORZYSTANIEM TECHNIK RENDERINGU OBJĘTOŚCIOWEGO

Podstawy OpenCL część 2

Ćwiczenie 1. Wprowadzenie do programu Octave

OpenGL Światło (cieniowanie)

Przetwarzanie obrazów rastrowych macierzą konwolucji

Przetwarzanie sygnałów

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Różne rodzaje efektów

Modelowanie rynków finansowych z wykorzystaniem pakietu R

CUDA PROGRAMOWANIE PIERWSZE PROSTE PRZYKŁADY RÓWNOLEGŁE. Michał Bieńkowski Katarzyna Lewenda

Poniżej pokazane są poszczególne etapy, w nawiasach kwadratowych znajdują się nazwy tekstur, które utworzymy w projekcie, a przy strzałkach nazwy

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

KONKURS MATEMATYCZNY

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY Z MATEMATYKI W KLASIE IV

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

WYDZIAŁ MECHANICZNO-ENERGETYCZNY KARTA PRZEDMIOTU

Liczby zespolone. Magdalena Nowak. 23 marca Uniwersytet Śląski

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo.

Ćwiczenie 1. Wprowadzenie do programu Octave

Obliczenia Naukowe. Wykład 12: Zagadnienia na egzamin. Bartek Wilczyński

Szacowanie wartości monet na obrazach.

Transkrypt:

i przykładowa implementacja w asemblerze Politechnika Śląska Instytut Informatyki 27 sierpnia 2009

A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja Profiling i testy Porównanie osiągnięć Demonstracja, kod i pytania

2D Kolor na podstawie szybkości ucieczki

4D Algorytm: maszerujące sześciany

4D Algorytm: śledzenie promieni

A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja Profiling i testy Porównanie osiągnięć Demonstracja, kod i pytania

Julia dwuwymiarowa Zbiór Julii tworzą punkty P(x, y) Z Takie, że ciąg: { z0 = x + yi = z 2 n + c z n+1 nie dąży do nieskończoności. Parametr fraktala c = c 1 + c 2 i (1)

Julia czterowymiarowa Rozszerzenie polegające na zamianie liczb zespolonych na kwaterniony. Analogicznie: Zbiór Julii tworzą punkty P(x, y, z, w) Z Takie, że ciąg: { z0 = x + yi + zj + wk = z 2 n + c z n+1 nie dąży do nieskończoności. Parametr fraktala c = c 1 + c 2 i + c 3 j + c 4 k Więcej różnic można się spodziewać w definicji działań mnożenia i dodawania. (2)

Wstęp do renderowania Iteracja po pikselach obrazu. Przeliczanie współrzędnych obrazu na współrzędne zespolone. Heurystyczne określanie zbieżności ciągu. Przypisanie koloru do piksela. Zastosowanie analogicznego próbkowania w renderingu 3D Próbkowanie przestrzeni Julii celem określenia zbioru punktów przestrzeni należących do fraktala. Tworzenie siatek trójkątów za pomocą algorytmu maszerujących sześcianów i rendering np. za pomocą OpenGL.

Wstęp do renderowania Iteracja po pikselach obrazu. Przeliczanie współrzędnych obrazu na współrzędne zespolone. Heurystyczne określanie zbieżności ciągu. Przypisanie koloru do piksela. Zastosowanie analogicznego próbkowania w renderingu 3D Próbkowanie przestrzeni Julii celem określenia zbioru punktów przestrzeni należących do fraktala. Tworzenie siatek trójkątów za pomocą algorytmu maszerujących sześcianów i rendering np. za pomocą OpenGL.

Problem złożoności obliczeniowej Mnożenie liczb zespolonych s = z d: { sx = z x d x z y d y s y = z y d x + z x d y Mnożenie kwaternionów s = z d: s x = z x d x z y d y z z d z z w d w s y = z x d y + z y d x + z z d w z w d z s z = z x d z z y d w + z z d x + z w d y s w = z x d w + z y d z z z d y + z w d x Jak widać ilość obliczeń potrzebnych dla Julii kwaternionów jest o wiele większa.

Ilość operacji Ile operacji mnożenia trzeba wykonać żeby wygenerować wizualizację dwuwymiarową zbioru Julii bez antyaliasingu? Obrazek 640x480 to 307200 pikseli. Każdy piksel wymaga około 10 iteracji równania?? celem określenia czy granica jest właściwa. W sumie około 307200 * 10 * 3 = 9 216 000 mnożeń i 61 44 000 dodawań. To dużo.

A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja Profiling i testy Porównanie osiągnięć Demonstracja, kod i pytania

Podstawy algorytmu Tworzenie promieni kamera i jej opis. Wykrywanie kolizji promieni z fraktalem. Metoda krokowa: Obliczanie wektora normalnego do fraktala Określenie koloru wynikowego piksela

Ulepszenie algorytmu Unbounding volumes, czyli estymacja odległości promienia od Julii.

Jeszcze trochę matematyki W celu estymacji dolnej granicy odległości punktu do Julii, prócz obliczania granicy ciągu z n musimy również oszacować granicę funkcji pochodnej. { d0 = 1 + 0i + 0j + 0k d n+1 = 2z n d n (3) I ostatecznie obliczyć odległość ze wzoru: l = z log z (4) 2 d

Co zrobić ze znalezioną kolizją promień Julia? Obliczenie wektora normalnego. Wykorzystanie bufora głębokości (Z-Buffer) Z gradientu pola skalarnego Model oświetlenia Phong: Ambient, diffuse, specular

A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja Profiling i testy Porównanie osiągnięć Demonstracja, kod i pytania

Co warto zoptymalizować

Czyli konkretnie co? 1 s t a t i c i n l i n e T j u l i a l i m i t c ( const Q point ) 2 { 3 Q d = { 1. 0, 0., 0., 0. }, z = point ; 4 T z l ; 5 i n t i ; 6 f o r ( i =0; i<j u l i a i t e r ; i ++) { 7 mul(&z, &d ) ; mul c(&d, 2. 0 ) ; 8 9 sqr(&z ) ; add(&z, &j u l i a c ) ; 10 11 z l = len2(&z ) ; 12 i f ( z l > j u l i a i n f ) 13 break ; 14 } 15 z l = sqrtt ( z l ) ; 16 return 0. 5 z l logt ( z l ) / l e n (&d ) ; 17 }

Jak warto zoptymalizować Przepisując często wywoływane funkcje do assemblera. Ograniczając dokładność renderowanego obrazu. Wykorzystując procesor macierzowy umożliwiającym wielopotokowe przetwarzanie danych (np. graficzny). Wykorzystanie przetwarzania SIMD dostępnego na architekturze x86 SSE. Umożliwiając przetwarzanie danych na wielu procesorach jednocześnie.

Podział pracy na wątki Niezależność renderowania poszczególnych pikseli. Dzielenie ekranu na pionowe lub poziome paski, które są renderowane niezależnie przez wątki. Optymalizacja podziału ekranu + pozostałe dane.

A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja Profiling i testy Porównanie osiągnięć Demonstracja, kod i pytania

1 klatka, 1 wątek, 6 próbek Stanowisko: CPU: 2 x Intel Xeon X5365, 3GHz; Quad core GPU: nvidia Corporation Quadro NVS 290

Czas pracy w zależności od podziału na wątki

Renderowanie 200 klatek animacji 640x480

Różnice w implementacji IEEE754

A teraz... 1 Fraktale Julia Przykłady Wstęp teoretyczny Rendering za pomocą śledzenia promieni 2 Implementacja Profiling i testy Porównanie osiągnięć Demonstracja, kod i pytania

Podsumowanie Demonstracja programu. Analiza kodu źródłowego. Pytania?