RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski



Podobne dokumenty
Plan wykładu. Akcelerator 3D Potok graficzny

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

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

Karty graficzne możemy podzielić na:

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Systemy graficzne. dr inż. Mariusz Szwoch

Grafika komputerowa i wizualizacja

Informatyka I stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

PRZEWODNIK PO PRZEDMIOCIE

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

Julia 4D - raytracing

Projektowanie gier komputerowych. dr inż. Mariusz Szwoch

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

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

KARTA KURSU. Grafika komputerowa

i3: internet - infrastruktury - innowacje

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

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

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

Moc płynąca z kart graficznych

Przyspieszanie sprzętowe

Wykład 4. Rendering (1) Informacje podstawowe

Organizacja pamięci w procesorach graficznych

Budowa Mikrokomputera

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

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

Gry Komputerowe - laboratorium 0

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Obraz realistyczny. Realizm w grafice komputerowej. Realizm modelu: z!o#one siatki wielok$tów. Realizm modelu geometrycznego. Realizm modelu: spline'y

PORÓWNANIE WYDAJNOŚCI JĘZYKÓW CIENIOWANIA CG I HLSL

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Architektura systemów komputerowych Ćwiczenie 3

Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

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

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

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

CZYM JEST KARTA GRAFICZNA.

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

Adam Korzeniewski - p. 732 dr inż. Grzegorz Szwoch - p. 732 dr inż.

GUI - projektowanie interfejsów

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

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Zaawansowana Grafika Komputerowa

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

MESco. Testy skalowalności obliczeń mechanicznych w oparciu o licencje HPC oraz kartę GPU nvidia Tesla c2075. Stanisław Wowra

Załącznik nr 6 do SIWZ nr postępowania II MJ Zaoferowany. sprzęt L P. Parametry techniczne

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

1 LEKCJA. Definicja grafiki. Główne działy grafiki komputerowej. Programy graficzne: Grafika rastrowa. Grafika wektorowa. Grafika trójwymiarowa

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

My niżej podpisani... działając w imieniu i na rzecz... w odpowiedzi na ogłoszenie o przetargu nieograniczonym na :

Gry społecznościowe. wykład 0. Joanna Kołodziejczyk. 24 lutego Joanna Kołodziejczyk Gry społecznościowe 24 lutego / 11

PRZEWODNIK PO PRZEDMIOCIE

Praca dyplomowa magisterska

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

/wpisać: model, symbol, producent urządzenia/

Architektura Komputerów

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

Bartłomiej Filipek

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

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Programowanie procesorów graficznych GPGPU

PROCESOR Z ODBLOKOWANYM MNOŻNIKIEM!!! PROCESOR INTEL CORE I7 4790K LGA1150 BOX

ViLab- program służący do prowadzenia obliczeń charakterystyki energetycznej i sporządzania świadectw charakterystyki energetycznej

SPECYFIKACJA TECHNICZNA (minimalne parametry techniczne)

Elementy do grafiki komputerowej. Wprowadzenie

2 099,00 PLN OPIS PRZEDMIOTU AMIGO CORE I7 8X3,7GHZ 8GB 1TB USB3.0 WIN amigopc.pl CENA: CZAS WYSYŁKI: 24H

Przegląd architektury PlayStation 3

KOMPUTER AMIGO INTEL I3 HD GRAPHIC CORE I GB DDR3 HD GB DVD

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

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

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.

Lp. Nazwa Parametry techniczne

Architektura komputerów

PRZEWODNIK PO PRZEDMIOCIE

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Dane Techniczne TH ALPLAST ADS-S25

PRZEWODNIK PO PRZEDMIOCIE

GRAFIKA CZASU RZECZYWISTEGO Wstęp do programowania grafiki czasu rzeczywistego.

565,00 PLN OPIS PRZEDMIOTU AMIGO AMD APU GBHD7480D amigopc.pl CENA: CZAS WYSYŁKI: 24H PRODUCENT: AMIGOPC

Komputer VIPER i x4,2ghz 8GB GTX 1050TI 4GB 1TB USB 3.0

CENTRALNA KOMISJA EGZAMINACYJNA

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Wprowadzenie do grafiki komputerowej. W. Alda

Bartosz Bazyluk GAME LOOP Podstawowy element silnika gry komputerowej. Programowanie Gier Komputerowych, Informatyka S1, III Rok

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

Welcome to the waitless world. Inteligentna infrastruktura systemów Power S812LC i S822LC

Rok akademicki: 2013/2014 Kod: RIA s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Transkrypt:

RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski

Plan wykładu Wprowadzenie, literatura Zasady zaliczenia Zakres materiału, zagadnienia Biblioteki graficzne czasu rzeczywistego Historia renderingu na kartach graficznych Procesory główne i graficzne porównanie Przypomnienie podstawowych algorytmów i pojęć związanych z renderingiem

Wprowadzenie Rendering w czasie rzeczywistym polega na generowaniu obrazów na tyle szybko, aby stworzyć wrażenie płynnej animacji i zagwarantować interaktywną współpracę aplikacji z użytkownikiem Aby animacje były postrzegane jako płynne, niezbędne minimum częstotliwości odświeżania to około 30Hz, wartość ta jest stosowana w filmach

Wprowadzenie c.d. W przypadku interaktywnych aplikacji komputerowych częstotliwość odświeżania najlepiej jest synchronizować z monitorem, czyli ok. 60Hz dla większości ekranów LCD Oprócz zagwarantowania wystarczającej częstotliwości odświeżania obrazu należy też zadbać o jego odpowiednią jakość Współcześnie pozwala na to jedynie współpraca procesora głównego i graficznego

Literatura Tomas Akenine-Moller, Eric Haines, Naty Hoffman Real-Time Rendering, 3rd edition, AK Peters 2008 http:// www.realtimerendering.com GPU Gems 1-3 http://developer.nvidia.com/object/g pu_gems_home.html

Literatura OpenGL Specyfikacja standardu OpenGL Mark Segal, Kurt Akeley, The OpenGL Graphics System: A Specification (version 4.3), 2012, http://www.opengl.org/registry/ John Kessenich, Dave Baldwin, Randi Rost, The OpenGL Shading Language, Language Version: 4.3, 2012, http://www.opengl.org/registry/ Dokumentacja rozszerzeń ARB, EXT, NV, ATI, Podręcznik do funkcji API on-line

Literatura OpenGL, c.d. Dave Shreiner OpenGL Programming Guide: The Official Guide to Learning OpenGL, versions 3.0 and 3.1, 7th edition Addison-Wesley Professional 2009 Randi Rost, Bill Licea-Kane OpenGL Shading Language, 3rd edition Addison Wesley Professional 2009

Literatura OpenGL, c.d. Richard S. Wright, Nicholas Haemel, Graham Sellers OpenGL SuperBible, 5th edition Addison-Wesley Professional 2010 Aaftab Munshi, Dan Ginsburg, Dave Shreiner OpenGL ES 2.0 Programming Guide Addison-Wesley Professional 2008

Literatura OpenGL, c.d. David Wolff OpenGL 4.0 Shading Language Cookbook Packt Publishing 2011 Patrick Cozzi, Christophe Riccio OpenGL Insights CRC Press 2012

Literatura CPU vs. GPU Victor W. Lee i inni Debunking the 100X GPU vs. CPU Myth: An Evaluation of Throughput Computing on CPU and GPU International Symposium on Computer Architecture 2010 http://pcl.intelresearch.net/publications/publications.htm

Zasady zaliczenia Wykonywanie zadań na ćwiczeniach, aktywność Przygotowanie i przedstawienie projektu na zajęciach Proponowane tematy na następnych slajdach Można tez zdecydować się na własny temat, związany z renderingiem Max. jedna nieusprawiedliwiona nieobecność

Laboratorium ćwiczenia Na pierwszych zajęciach Uruchomienie aplikacji OpenGL, sprawdzenie/wybór wersji, obsługa rozszerzeń Rendering prostej geometrii przy użyciu programów wierzchołków i fragmentów Teksturowanie Potem: implementacja i testowanie technik poznanych na wykładach

Projekty Zajęcia będą prowadzone na podstawie biblioteki OpenGL Projekt można też wykonać przy pomocy biblioteki DirectX, trzeba będzie się wtedy nauczyć jej obsługi we własnym zakresie Projekty będą odbierane w styczniu Program, demonstracja i omówienie działania 10-15 minutowa prezentacja

Projekty c.d. Projekty są dwuosobowe, jedna grupa może liczyć trzy osoby, jednak projekt powinien być wtedy nieco bardziej ambitny

Tematy projektów Woda: symulacja fal, rendering powierzchni, załamanie, odbicie, kaustyki, dyspersja, mapowanie środowiskowe Dym, mgła: systemy cząsteczkowe, obiekty półprzezroczyste, ruch cząsteczek, ich interakcja z otoczeniem

Tematy projektów c.d. Grafika 2D wspierana sprzętowo: zapoznanie się z rozszerzeniem GL_NV_PATH_RENDERING i wykonanie na jego podstawie prostego edytora Poziomy szczegółowości: (ang. LoD) podmiana siatki, automatyczne upraszczanie siatki, rendering w oparciu o tzw. krzyżaki i billboardy

Tematy projektów c.d. Globalne oświetlenie: technika SSAO (Screen Space Ambient Occlusion) uwypuklenie kształtu obiektów nieoświetlonych bezpośrednio, postprocessing Cienie na dużych obszarach: technika Cascaded Shadow Maps, zastosowanie kilku map cienia do obszarów o wykładniczo rosnących rozmiarach

Tematy projektów c.d. System pogody: symulacja nieba w zależności od pory dnia wschody i zachody słońca, kolor nieba, rendering chmur Dynamiczny wybór rozdzielczości i ładowanie tekstur na GPU w zależności od rozmiaru obiektu na ekranie i gęstości mapowania tekstury

Zakres materiału Tworzenie syntetycznych obrazów z interesującymi efektami wizualnymi Użycie programowalnych procesorów graficznych, Konieczne ze względu na wydajność Zastosowanie przede wszystkim gry komputerowe Też aplikacje CAD, ale tam na ogół ważniejsza jest precyzja niż wygląd

Zagadnienia Lokalne modele oświetlenia: Phong, Cook-Torrance, Ashikhmin-Shirley Techniki mapowania nierówności i przemieszczeń Rendering obiektów półprzeźroczystych Metoda opóźnionego cieniowania (deferred shading) Mapy cienia techniki: podstawowa, PCF i VSM, dla świateł punktowych i kierunkowych

Zagadnienia c.d. Post-processing, HDR i tone mapping Filtrowanie tekstur Techniki antyaliasingu geometrii Wprowadzenie do programów geometrii Wprowadzenie do programowalnej teselacji Tekstury do odczytu i zapisu Półprzeźroczystość jeszcze raz

Zagadnienia c.d. Omówienie metody: skinning for animation Omówienie metody: clipmap rendering Alternatywy dla renderingu przy pomocy rasteryzacji różne warianty śledzenia promieni

Biblioteki graficzne czasu rzeczywistego Kilkanaście lat temu grafika czasu rzeczywistego była generowana na procesorze głównym, przy pomocy renderera napisanego od zera Wolfenstein, Doom, Quake, Wszystkie współczesne aplikacje tego typu wymagają kart graficznych Biblioteki graficzne zapewniają dostęp do funkcjonalności kart graficznych różnych producentów, oferując podstawowe procedury renderingu

Biblioteki graficzne czasu rzeczywistego c.d.

Biblioteki graficzne czasu rzeczywistego c.d. Biblioteki te skupiają się tylko na jednym algorytmie renderingu rasteryzacji Obecnie żaden inny algorytm (np. śledzenie promieni) w czasie rzeczywistym nie jest w stanie stworzyć obrazu o lepszej jakości Najczęściej stosowane biblioteki to OpenGL i DirectX Mają one bardzo podobne możliwości i wydajność Wybór jednej z nich to kwestia zależności od platform

OpenGL Biblioteka niezależna od platformy PC Linux/Windows, Mac, PS3 Opracowana przez SGI na początku lat 90 Obecnie utrzymywana przez konsorcjum Khronos, skupiające wiele różnych firm z branży Powszechne stosowanie rozszerzeń przez producentów kart graficznych Model programowania proceduralny Najlepiej język C albo C++

DirectX Biblioteka własnościowa Microsoftu Z OpenGL em konkuruje jedynie Direct3D Rozwijana od połowy lat 90, powstała kilka lat później niz OpenGL Niedostępna na systemach Linux, MacOS, PS3 i w nowszych wersjach na Windows XP (!) Brak (tylko teoretycznie) możliwości tworzenia rozszerzeń Model programowania obiektowy

Historia renderingu na kartach graficznych Karty graficzne nieprogramowalne OpenGL 1.x, DirectX do wersji 7 Tylko rendering trójkątów z pojedynczą teksturą Tryby łączenia wielu tekstur Sprzętowa transformacja i oświetlenie wierzchołków Programowalne przetwarzanie wierzchołków Rozszerzenia OpenGL 1.x, DirectX 8.x

Historia renderingu na kartach graficznych c.d. Programowalne przetwarzanie fragmentów OpenGL 2.x, DirectX 9.x Możliwość pisania coraz bardziej zaawansowanych programów Nowe formaty tekstur, HDR, rendering do tekstury

Historia renderingu na kartach graficznych c.d. Programowalne przetwarzanie geometrii OpenGL 3.x, DirectX 10.x Operacje na prymitywach Obliczenia na GPU, operacje stałoprzecinkowe

Historia renderingu na kartach graficznych c.d. Programowalna teselacja OpenGL 4.x, DirectX 11 Nowe możliwości programów GPU Zapis i odczyt z tekstury, operacje atomowe Częściowa implementacja funkcji wirtualnych

Procesory główne i graficzne Obecnie procesory te przeznaczone są do różnych zadań Procesor graficzny (GPU) jest procesorem specjalizowanym potrafi pewne zadania wykonać o wiele szybciej niż procesor główny (CPU) GPU nie nadaje się do wszystkiego! Procesor główny potrafi wykonać dowolny algorytm, jednak nie zawsze w optymalnym czasie i przy niewielkim zużyciu energii

Procesory CPU Optymalizowane do szybkiego przetwarzania sekwencyjnego Względnie szybki zegar, ok. 2.5GHz do ok. 3.5GHz Względnie duża ilość pamięci cache (zwykle 2-12MB L3) Binarna kompatybilność wsteczna

Procesory CPU c.d. Posiadają ograniczone możliwości równoległego wykonywania programów Typowo: 2-6 rdzeni, do 12 wątków z HT SIMD 4x albo 8x (AVX)

Procesory CPU c.d. Możliwość zastosowania dużych ilości pamięci, do 8x4GB w przypadku komputerów domowych, do 16x8GB w przypadku tańszych serwerów, nawet ponad 200GB w droższych serwerach Pamięć wirtualna na dysku rozmiar praktycznie nieograniczony, ale bardzo wolna Niestety względnie mała przepustowość pamięci, obecnie sytuacja ulega poprawie, kontrolery wielokanałowe

Procesory CPU c.d. Możliwość łatwego łączenia kilku układów na jednej płycie głównej 2CPU optymalna relacja cena/wydajność 4CPU i więcej też możliwe ale znacznie droższe 2x więcej rdzeni, niemal 2x większa wydajność aplikacji które są dobrze dostosowane do wielowątkowości 2x więcej pamięci o 2x większej przepustowości Niestety nieco większe opóźnienia, NUMA

Procesory CPU c.d.

Procesory GPU Zoptymalizowane do przetwarzania równoległego Taktowane wolniej niż procesory główne ok. 800MHz do 1.5GHz Konieczność rekompilacji programów po przejściu na nowszy GPU

Procesory GPU c.d. Bardzo rozbudowane możliwości przetwarzania równoległego Do 16 rdzeni z SIMD 32x na procesorach NVIDIA (512 jednostek ALU) Do 24 rdzeni z SIMD 16x i VLIW 4x na procesorach ATI/AMD (1536 jednostek ALU)

Procesory GPU c.d. Ze względu na ogromne znaczenie technologii SIMD i VLIW, procesory te są bardzo nieefektywne w przypadku kodu o dużej ilości rozgałęzień warunkowych Posiadają bardzo przydatne jednostki specjalizowane do teksturowania, obliczania funkcji przestępnych, itp. Posiadają sprzętowy dekoder video, niestety bezużyteczny w grach i obliczeniach

Procesory GPU c.d. Względnie mało pamięci cache (mniej niż 1MB) Ograniczona maksymalna pojemność pamięci, ok. 1-2GB na kartach do użytku domowego, 6GB na kartach profesjonalnych (np. Quadro i Tesla) Brak pamięci wirtualnej Bardzo duża przepustowość pamięci, nieco mniejsze opóźnienia niż w przypadku CPU

Procesory GPU c.d. Łączenie kilku kart graficznych technologie SLI (NVIDIA) albo CrossFire (ATI/AMD) 2, 3, albo 4 procesory Konieczność replikacji danych, zwielokrotnienie dostępnych rdzeni, ale tyle samo pamięci Nieefektywna komunikacja pomiędzy różnymi GPU, często algorytmy dobrze zrównoleglone na poziomie logicznym nie działają dobrze w trybie SLI/CrossFire

Procesory GPU c.d.

Podstawy grafiki 3D Modele budowane z wierzchołków Pozycja Normalna, styczne Współrzędne tekstury I wiele innych Wybrane trójki wierzchołków tworzą trójkąty, stanowiące brzeg modelu Najnowsze karty obsługują bardziej złożone powierzchnie (sprzętowa teselacja)

Podstawy grafiki 3D c.d. Wierzchołki są transformowane z przestrzeni obiektu, przez przestrzeń świata i widoku do przestrzeni ekranu przy pomocy macierzy W przestrzeni ekranu wykonywana jest rasteryzacja trójkątów Na ogół liczone jest też oświetlenie i teksturowanie Wymienione powyżej elementy są bardzo podstawowe, obecnie stosuje się o wiele więcej zaawansowanych technik

Programowalne karty graficzne

Programowalne karty graficzne Wierzchołki są przetwarzane przy pomocy jednostki programowalnej, można wykonać na nich dowolne operacje Każdy wierzchołek przetwarzany jest niezależnie od pozostałych jest to ograniczenie, ale umożliwia ono w pełni równoległe ich przetwarzanie Następnie są tworzone, przycinane i rasteryzowane trójkąty, programista ma mocno ograniczoną kontrolę nad tym procesem

Programowalne karty graficzne W OpenGL od wersji 3.2 jest dostępny programowalny procesor geometrii, który operuje jednocześnie na wszystkich wierzchołkach prymitywu (np. trójkąta albo linii) Może on wygenerować albo usunąć wierzchołki Nie jest to możliwe dla procesora wierzchołków Od wersji 4.0 jest dostępny programowalny procesor teselacji Znacznie efektywniejszy przy dodawaniu geometrii

Programowalne karty graficzne Ostatnią w kolejności jednostką programowalną jest procesor fragmentów (nie pikseli!) Operuje on na indywidualnych fragmentach powstałych w wyniku rasteryzacji prymitywów Fragmenty te odpowiadają pikselom w buforze ramki Zanim staną się pikselami przechodzą jeszcze serię konfigurowalnych, ale nie programowalnych operacji Na najnowszych kartach graficznych można, stosując pewne chwyty, zasymulować procesor pikseli, jednak kosztem utraty wydajności

Programowalne karty graficzne Fragmenty obliczone przez procesor fragmentów zanim staną się pikselami poddawane są testom i operacjom: Test głębi Test nożyc Test szablonu Alpha blending Operacje logiczne

Dziękuję za uwagę