RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Podobne dokumenty
RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Plan wykładu. Akcelerator 3D Potok graficzny

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

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Filtrowanie tekstur. Kinga Laurowska

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karty graficzne możemy podzielić na:

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

Efekty dodatkowe w rasteryzacji

Julia 4D - raytracing

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

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

Architektura systemów komputerowych Ćwiczenie 3

Grafika komputerowa i wizualizacja

Architektura Komputerów

Zaawansowana Grafika Komputerowa

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

SYMULACJA OPADÓW ATMOSFERYCZNYCH I POKRYWY ŚNIEŻNEJ W GENERATORZE OBRAZU JASKIER IG

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

Transformacje. dr Radosław Matusik. radmat

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

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

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

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

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

Zaawansowany kurs języka Python

Analiza obrazów - sprawozdanie nr 2

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

OpenGL Światło (cieniowanie)

1. Prymitywy graficzne

Podstawy grafiki komputerowej

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

OpenGL Światło (cieniowanie)

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

Podstawy programowania w języku C i C++

Analiza obrazów. Segmentacja i indeksacja obiektów

OpenGL przezroczystość

FORMATY PLIKÓW GRAFICZNYCH

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

Jak wybrać akcelerator 3D dedykowany aplikacjom typu MCAD?

Oświetlenie obiektów 3D

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

3 Przygotował: mgr inż. Maciej Lasota

Autodesk 3D Studio MAX Teksturowanie modeli 3D

GRAFIKA KOMPUTEROWA 10: Antyaliasing

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

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

GRK 4. dr Wojciech Palubicki

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

TECHNIKI MULTIMEDIALNE LABORATORIUM GIMP: Projektowanie tła

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Sphere tracing: integracja z klasycznymi metodami symulacji i renderingu

WYKŁAD 12. Analiza obrazu Wyznaczanie parametrów ruchu obiektów

Gry komputerowe: efekty specjalne cz. 2

1. Czym jest rendering? a. Komputerowa analiza modelu danej sceny i utworzenie na jej podstawie obrazu 2D. b. Funkcja umożliwiająca kopiowanie obrazu

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

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

Grafika komputerowa Tekstury

Teksturowanie (ang. texture mapping)

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

Grafika Komputerowa 3D Etap drugi

PRZEWODNIK PO PRZEDMIOCIE

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

Grafika komputerowa. Dla DSI II

Architektura Procesorów Graficznych

Implementacja filtru Canny ego

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

WYKŁAD 3. Przykłady zmian w obrazie po zastosowaniu Uniwersalnego Operatora Punktowego

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

Przykładowe pytania na teście teoretycznym

Grafika na stronie www

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Algorytmy i struktury danych

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

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

WSTĘP DO GRAFIKI KOMPUTEROWEJ

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

Algorytm SAT. Marek Zając Zabrania się rozpowszechniania całości lub fragmentów niniejszego tekstu bez podania nazwiska jego autora.

Różne rodzaje efektów

GRAFIKA WEKTOROWA. WYKŁAD 1 Wprowadzenie do grafiki wektorowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Jak uzyskać efekt 3D na zdjęciach z wykorzystaniem programu InkScape

Technologie Informacyjne

PyGame Gra w Ponga. Spis treści

Trójwymiarowa wizualizacja danych przestrzennych

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

Karta graficzna. Karta graficzna przyjmuje. rozszerzeń montowanej w magistrali wejścia/wyjścia na płycie głównej. Opcjonalnie układ graficzny

Transkrypt:

RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski

Plan wykładu Obiekty półprzeźroczyste wprowadzenie Test alfa, odrzucanie Mieszanie alfa Obiekty naklejane, ang. decals Konwersja próbki punktowe obraz rastrowy Kolejność renderingu, bufor Z, sortowanie Roślinność, wygładzanie krawędzi Technika Alpha to Coverage

Plan wykładu c.d. Cząsteczki efekt kolizji z otoczeniem Efekt rozmazania, oszronienia, itp. Technika Depth Peeling Sposób uniknięcia konieczności sortowania Rendering wieloprzebiegowy Bufor Z oraz bufor K Rendering jednoprzebiegowy bez sortowania Do napisania tylko na najnowszych kartach Rendering obiektów wolumetrycznych

Literatura T. Duff, Compositing 3D rendered images, SIGGRAPH 1985 C. Everitt, Interactive Order-Independent Transparency, NVIDIA white paper, 2001 C. Green, Improved Alpha-Tested Magnification for Vector Textures and Special Effects, Valve 2007 J. Hensley, Order-Independent Transparency in DirectX11, AMD 2011

Literatura c.d. L. Bavoil i inni, Multi-Fragment Effects on the GPU using the k-buffer, Symposium on Interactive 3D Graphics 2007 Antialiasing with Transparency, NVIDIA Technical Report, 2005 T. Lorach, Soft Particles, NVIDIA Whitepaper, 2007

Obiekty półprzeźroczyste wprowadzenie Rendering obiektów, przez które widać tło, ale nie załamujących światła Nie trzeba stosować mapowania środowiskowego Technika prosta w przypadku śledzenia promieni Niestety okazuje się problematyczna w renderingu w czasie rzeczywistym, opartym o bufor głębi Bufor głębi nie działa dla obiektów półprzeźroczystych Konieczność stosowania skomplikowanych algorytmów (albo ignorowanie problemu)

Obiekty półprzeźroczyste wprowadzenie

Test alfa, odrzucanie Test alfa Rendering albo odrzucanie fragmentów na podstawie wartości alfa Karty nieprogramowalne, obecnie nie używane Program fragmentów może odrzucić fragment na podstawie spełnienia dowolnego warunku if (cond) discard; Metoda stosowana obecnie Znacznie bardziej elastyczna

Test alfa, odrzucanie c.d. Nie powoduje trudności związanych z buforem Z (głębi) Nadaje się do renderingu obiektów o skomplikowanym kształcie za pomocą prostej geometrii Niestety wynikiem są brzydkie, postrzępione krawędzie obiektów Można też renderować obiekty półprzeźroczyste, tzw. checkboard pattern, ale efekt nie jest zbyt dobry

Test alfa, odrzucanie c.d.

Mieszanie alfa

Mieszanie alfa c.d. Mieszanie koloru fragmentu z kolorem w buforze ramki Operacja w pewnym zakresie konfigurowalna, ale nie programowalna (nawet na najnowszych kartach) RGB = op RGB (F 1 *RGB src, F 2 *RGB dst ) A = op A (F 1 *A src, F 2 *A dst ) op: +,, odwrotne, min, max F x : 0, 1, RGB src, 1 RGB src, RGB dst, 1 RGB dst, A src, 1 A src, RGB C, 1 RGB C, A C, 1 A C

Mieszanie alfa c.d. Możliwość niezależnego ustawiania operacji dla koloru i kanału alfa Dla prostej półprzeźroczystości można stosować RGBA = A src *RGBA src + (1 A src )*RGBA dst Nowe możliwości od OpenGL w wersji 3.x Opcjonalny drugi kolor wynikowy dla fragmentów Obiekt może nakładać swój kolor, i filtrować tło drugim, niezależnie obliczanym, kolorem Nowe wartości F x : RGB 2, 1 RGB 2, A 2, 1 A 2,

Mieszanie alfa c.d. Przykład mieszania alfa z operatorem dodawania:

Obiekty naklejane Wielokrotne użycie tych samych tekstur, np. na ścianach budynków, na skałach, etc. Obiekty naklejane dodają unikatowe szczegóły Zajmują o wiele mniej pamięci niż unikatowe teksturowanie wszystkiego Unikatowe teksturowanie (!) pojawiło się ostatnio w grze Rage firmy ID Software

Pola odległości W przypadku pewnej klasy tekstur tekstur wektorowych stosowanie zarówno testu alfa jak i mieszania alfa nie daje dobrych rezultatów Tekst, znaki drogowe, itp. Aby uniknąć problemów przy powiększaniu można, zamiast zwiększania rozdzielczości, zastosować tzw. pola odległości Pola odległości w tekselach przechowują odległość od obiektu Liczba ze znakiem, wewnątrz albo na zewnątrz obiektu

Pola odległości c.d.

Pola odległości c.d. Program fragmentów oblicza kolor na podstawie odczytanej odległości Wyniki znacznie lepsze niż zastosowanie kanału alfa Ale: kolor musi być funkcją odległości

Pola odległości c.d.

Konwersja próbki punktowe obraz rastrowy Stosowane np. przy interaktywnym śledzeniu promieni Wyjściem śledzenia promieni jest strumień próbek punktowych, które należy przekształcić w obraz rastrowy, stosując odpowiedni filtr Rendering czworokątów w pozycjach próbek, o rozmiarze równym zasięgowi filtra Wartości filtra zakodowane są w teksturze

Konwersja próbki punktowe obraz rastrowy c.d. Mieszanie alfa ustawione na dodawanie, oba czynniki F1 i F2 powinny mieć wartość 1 W programie fragmentów mnożenie koloru próbki przez wartość odczytaną z tekstury filtru W kanale alfa przechowywana jest suma wag filtrowania Po renderingu czworokątów kanały RGB należy podzielić przez kanał A

Kolejność renderingu, sortowanie

Kolejność renderingu, sortowanie Rendering obiektów półprzeźroczystych w oparciu o bufor głębi nie daje oczekiwanych rezultatów Wynikowy obraz może zależeć od kolejności renderingu, decyduje o tym operator mieszania Rendering obiektów nieprzeźroczystych w pierwszej kolejności, z buforem głębi Następnie rendering obiektów półprzeźroczystych, w kolejności od najdalszych do najbliższych, z wyłączonym buforem głębi

Kolejność renderingu, sortowanie Najmniejsze elementy, na które można rozbić obiekty to indywidualne trójkąty Na ogół nie da się bezbłędnie posortować trójkątów po odległości Odległość trójkątów od obserwatora nie jest relacją porządku Inne techniki opisane dalej

Roślinność, wygładzanie krawędzi Proste modele geometryczne Szczegóły dodawane przy pomocy tekstur testowanie albo mieszanie alfa Testowanie alfa szybsze, nie wymaga sortowania obiektów

Roślinność, wygładzanie krawędzi

Wygładzanie krawędzi Niestety przy testowaniu alfa powstają nieładnie wyglądające krawędzie Gdy stosowany jest antyaliasing geometrii można problemu tego uniknąć Technika Alpha to Coverage Działa dobrze dla dowolnych obiektów opartych o testowanie alfa

Technika Alpha to Coverage Stosowana przy antyaliasingu geometrii Supersampling zwielokrotnienie próbek głębi i koloru, działa zawsze bezbłędnie, jednak powoli Multisampling zwielokrotnienie wyłącznie próbek głębi, działa szybciej, ale proste testowanie alfa nadal powoduje postrzępione krawędzie obiektów

Technika Alpha to Coverage Technika Alpha to Coverage pozwala uniknąć brzydkich efektów wizualnych wynikających z połączenia testu alfa z multisamplingiem Mieszanie alfa nie jest konieczne Wartość alfa interpretowana jest jako procentowe zakrycie (coverage) danego fragmentu przez obiekt Wykonywane automatycznie przez kartę graficzną /glenable(gl_sample_alpha_to_coverage)/

Technika Alpha to Coverage

Cząsteczki efekt kolizji z otoczeniem Cząsteczki zwykle są półprzeźroczyste, z gładkimi krawędziami Przy wykrywaniu kolizji zwykle są reprezentowane jako punkty Natomiast wyświetlane są jako tzw. billboardy prostokąty zwrócone w kierunku obserwatora Powoduje to źle wyglądający efekt przecinania się cząsteczek z otoczeniem psujący wrażenie ciągłości dymu, mgły, itp.

Cząsteczki efekt kolizji z otoczeniem Sposób uniknięcia tego problemu Najpierw renderowane jest otoczenie, bez cząsteczek, z zapamiętaniem głębi w teksturze Tekstura głębi otoczenia używana jest przy renderowaniu cząsteczek Wymuszone zwiększanie współczynnika przeźroczystości cząsteczki gdy głębia fragmentu cząsteczki jest bliska głębi otoczenia Cząstka powinna być całkowicie przeźroczysta w punktach kolizji o głębi takiej samej jak otoczenie

Cząsteczki efekt kolizji z otoczeniem

Cząsteczki efekt kolizji z otoczeniem

Efekt rozmazania, oszronienia Nie da się go osiągnąć przy pomocy zwykłego mieszania alfa Należy najpierw renderować obiekty nieprzeźroczyste do tekstury, z ustawieniami kamery takimi samymi jak bez tego efektu Nie jest to więc mapowanie środowiskowe Posiadając taką teksturę w trakcie renderingu obiektów półprzeźroczystych można osiągnąć efekty takie, jak rozmazanie albo przesunięcie promieni

Efekt rozmazania, oszronienia Przesunięcie promieni przesunięcie współrzędnych tekstury Rozmazanie odczyt z niższego poziomu MIP Możliwe błędy na brzegach ekranu brak sąsiednich tekseli Na ogół ignorowane Umieszczenie takich obiektów jeden za drugim: Efekty te nie nałożą się na siebie Ewentualnie konieczność odświeżania tekstury

Efekt rozmazania, oszronienia

Technika Depth Peeling Rendering kolejnych warstw głębi Pierwsza warstwa jest renderowana normalnie Dla każdej kolejnej dwa testy głębi Pierwszy typowy (przepuszcza fragmenty bliższe obserwatora niż te z bufora ramki) Drugi przepuszcza fragmenty dalsze niż renderowane w poprzednim przebiegu Warunek stopu: żaden fragment nie przeszedł obu testów głębi Prosty i bezbłędny rendering obiektów półprzeźroczystych

Technika Depth Peeling c.d.

Bufor Z oraz bufor K Bufor Z zawiera informacje o m.in. głębi i kolorze dla pojedynczego fragmentu na piksel ekranu Bufor K może przechowywać więcej fragmentów na każdy piksel ekranu Obecnie żadna karta nie obsługuje automatycznie tej techniki Na najnowszych kartach można ją zaprogramować stosując atomowe liczniki i zapis do dowolnego teksela tekstury

Bufor K Złożony z dwóch tekstur W pierwszej z nich znajdują się listy odsyłaczowe fragmentów dla każdego piksela Tekstura 1D Rozmiar na tyle duży aby zmieściły się wszystkie fragmenty Zapis z zastosowaniem licznika atomowego W drugiej teksturze (2D, o rozmiarze ekranu) znajdują się indeksy startowe list fragmentów

Bufor K

Rendering obiektów wolumetrycznych Często stosowany przy wizualizacji w medycynie Trójwymiarowa tekstura przechowująca kolor i przeźroczystość obiektu Często stosowane algorytmy Rendering dowolnego przekroju wiele przebiegów albo jeden nie uwzględniający półprzeźroczystości Śledzenie promieni przez teksturę dobre rezultaty ale działa powoli Rzutowanie wokseli na ekran (ang. splatting) kompromis między jakością a wydajnością

Rendering obiektów wolumetrycznych

Wolumetryczne chmury Konieczne dla scen górskich, gdy chmury mogą być na wysokości obserwatora Techniki renderingu podobne jak w poprzednio omówionym przypadku Tekstury o znacznie mniejszej rozdzielczości oszczędność pamięci Otoczenie kolizja chmur z otoczeniem Podświetlenie przez słońce, tzw. rim lighting Cieniowanie chmur

Wolumetryczne chmury

Wolumetryczne chmury

Dziękuję za uwagę