Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Podobne dokumenty
Bartłomiej Filipek

Shadery. Artur Staszczyk Bartłomiej Filipek

Plan wykładu. Akcelerator 3D Potok graficzny

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

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

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

Przyspieszanie sprzętowe

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

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

Programowanie Procesorów Graficznych

Karty graficzne możemy podzielić na:

Wykład 4. Rendering (1) Informacje podstawowe

OpenGL Światło (cieniowanie)

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

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

OpenGL teksturowanie

Wykład 5. Rendering (2) Geometria

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

Grafika komputerowa. Grafika komputerowa. Grafika komputerowa

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

OpenGL Światło (cieniowanie)

Dowiedz się, jak tworzyć zapierające dech w piersiach gry 3D i efektowne, trójwymiarowe wizualizacje!

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery)

Wprowadzenie do grafiki maszynowej. Wprowadzenie do historii OpenGL

Architektura Procesorów Graficznych

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

Grafika komputerowa i wizualizacja

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

1 Temat: Vertex Shader

dr inż. Jacek Dąbrowski, KSG

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

Przegląd architektury PlayStation 3

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

Grafika 3D na przykładzie XNA 3.1

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Mobilne aplikacje multimedialne. OpenGL

Grafika Komputerowa, Informatyka, I Rok

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

OpenGL przezroczystość

PRZEWODNIK PO PRZEDMIOCIE

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie

Potok graficzny i shadery. Hubert Rutkowski

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Wyświetlanie terenu. Clipmapy geometrii

Tekstury. Dorota Smorawa

OpenGL i wprowadzenie do programowania gier

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

Architektura systemów komputerowych Ćwiczenie 3

Analiza moż liwości i porównanie nowych ję zyków do programowania grafiki

Teksturowanie (ang. texture mapping)

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

Wprowadzenie do QT OpenGL

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

Julia 4D - raytracing

Transformacje obiektów 3D

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

Biblioteka OpenGL: Wprowadzenie

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

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

Interakcja Człowiek-Komputer Modelowanie postaci i otoczenia. Dr inż. Sławomir Samolej

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

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

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 Komputerów

GPGPU General-Purpose computing on the GPU. Piotr Stańczyk

Bartosz Bazyluk OpenGL Programowalny potok renderowania, buforowanie geometrii (VBO, IBO, VAO).

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

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

Interakcja Człowiek-Komputer Modelowanie postaci i otoczenia. Dr inż. Sławomir Samolej

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

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

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

Z mapami światła i cienia

Wprowadzenie do WebGL

Zaawansowane i efektywne systemy cząsteczkowe w grach komputerowych.

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

Jak wybrać akcelerator 3D dedykowany aplikacjom typu MCAD?

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

Teksturowanie. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 10. Tekstury. Proces nakładania tekstury.

3 Przygotował: mgr inż. Maciej Lasota

Architektura Komputerów

Organizacja pamięci w procesorach graficznych

OpenGL - tekstury Mapowanie tekstur

Architektura Komputerów

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

Przekształcenia geometryczne. Dorota Smorawa

Wykład V. Karta graficzna. Studia stacjonarne Pedagogika Budowa i zasada działania komputera

Grafika Komputerowa 3D Etap drugi

Grafika Komputerowa 3D Etap drugi

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

Moc płynąca z kart graficznych

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Transkrypt:

Wprowadzenie Artur Staszczyk www.astaszczyk.com Bartłomiej Filipek www.bartlomiejfilipek.pl Bartlomiej.filipek@gmail.com

Podstawy grafiki 3D GPU Co to jest OpenGL Potok Graficzny Inicjalizacja Rendering

Dlaczego programowad grafikę? Czy dobry moment? Co można robid? Gry! GUI Wizualizacje Obliczenia

Wyspecjalizowane do obliczeo Często sprzętowe video Osobny proces asynchroniczny względem CPU! Klient/Server GPGPU

API do programowania kart graficznych Zestaw poleceo Standard przesyłania danych do karty Otwarta specyfikacja Implementowana przez twórców Zarządzana przez Khronos

v1.0 rok 1992, SGI Od 2.0 rok 2004 Shadery, GLSL v2.1 bufory ramek DX 9.0c Od 3.0 rok 2008 shadery geometrii DX10 nowy OpenGL wyrzucono fixed pipeline Od 4.0 rok 2010 Obecna wersja 4.2 Mniej więcej DirectX 11 Tesselacja

gluseprogram(program_id); glbindtexture(gl_texture_2d, id); glpushmatrix(); gltranslatef(0.0f, 0.0f, -24.0f); glbegin(gl_quads); glnormal3f( 0.0f, 0.0f, 1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f(-13.3f, -10.0f, 10.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f( 13.3f, -10.0f, 10.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f( 13.3f, 10.0f, 10.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f(-13.3f, 10.0f, 10.0f); glend(); glpopmatrix();

Dane o wierzchołkach i atrybuty (Przestrzeo obiektu) Transformacje świata Transformacje kamery Projekcja Obcinanie (clipping) Rasteryzacja Operacje na fragmentach Testy głębi/szablonu/alpha, Blending Bufor ramki

Operacje na wektorach matrices_can_be_your_friends.html gl_transform.html

Nadawanie koloru Teksturowanie Oświetlenie Etc, etc, etc, etc Blending Testy Z Alpha Stencil Zapis do bufora ramki Antyaliasing

Dane o wierzchołkach i atrybuty Transformacje Oświetlenie Obcinanie (clipping) Generacja współrzędnych tekstur oraz ich transformacje T&L rasteryzacja

Teksturowanie, łączenie kilku tekstur Operacje na fragmentach jak testy głębi, alpha, blending, etc. Texturing Unit Zapisz do bufora ramki gdy fragment zaakceptowany Antyaliasing

glenable(gl_lighting); glactivetexture(gl_texture0); gltexenvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); gldisable(gl_texture_2d); glbindtexture(gl_texture_2d, texfloor); glactivetexture(gl_texture1); gltexenvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD ); gldisable(gl_texture_2d); if (g_renderreflection) { glenable(gl_texture_cube_map); glbindtexture(gl_texture_cube_map, reflectiontex); glenable(gl_texture_gen_s); glenable(gl_texture_gen_t); glenable(gl_texture_gen_r); gltexgeni(gl_s, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); gltexgeni(gl_t, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP); gltexgeni(gl_r, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP);

Graficy i programiści czuli się ograniczeni przez statyczne i ustalone funkcje wewnętrzne OpenGL a. Aby stworzyd efekty trzeba było się nieźle natrudzid przy ustawianiu kolejnych parametrów stanów wewnętrznych OpenGL a. Tu coś wyłącz tu coś ustaw, etc, etc Brakowało elastyczności dlaczego nie mogę stworzyć czegoś nowego? Moc obliczeniowa kart graficznych jest tak duża, że fixed pipeline był dla nich wąskim gardłem.

Powstały dwie jednostki: vertex i fragment shadery. Verte shader ma na celu wykonad wszelkie operacje na wierzchołku transformacje, ustawianie kolorów, współrzędne tekstur, normalne Fragment shader zastępuje głównie teksturowanie, pokrywanie materiałem obiekty. Od teraz wszystko programujemy, a nie ustawiamy!

Vertex shader Dane o wierzchołkach i atrybuty Obcinanie (clipping) Transformacje Oświetlenie?? Generacja współrzędnych tekstur oraz ich transformacje Pomysły artystów rasteryzacja

Fragment Shader Teksturowanie, łączenie kilku tekstur mgła Pomysły artystów Operacje na fragmentach jak testy głębi, alpha, blending, etc. Zapisz do bufora ramki gdy fragment zaakceptowany Antyaliasing

System binding WGL Windows GLX Linux CGL Apple Windows Pixel format okna Opengl context wglmakecurrent

Od wersji 3.0 Core Tylko shadery, bufory Bez trybu natychmiastowego Bez modułu matematycznego do macierzy http://developer.nvidia.com/opengl-driver

https://www.opengl.org/registry/ www.lighthouse3d.com/tutorials/glut-tutorial/ opengl.org/sdk/docs/man3 www.opengl.org/documentation/specs openglbook.com - darmowa książka o nowoczesnym OpenGL www.arcsynthesis.org/gltut/ - darmowa książka o nowoczesnym OpenGL www.songho.ca/opengl/gl_vbo.html - tutorial o VBO

Artur Staszczyk www.astaszczyk.com Bartłomiej Filipek www.bartlomiejfilipek.pl Bartlomiej.filipek@gmail.com