Programowanie Procesorów Graficznych

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

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

GRK 2. dr Wojciech Palubicki

GRK 3. Dr Wojciech Palubicki

Bartłomiej Filipek

Wykład 4. Rendering (1) Informacje podstawowe

Plan wykładu. Akcelerator 3D Potok graficzny

Shadery. Artur Staszczyk Bartłomiej Filipek

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

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

1 Temat: Vertex Shader

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

Mobilne aplikacje multimedialne. OpenGL

Architektura Procesorów Graficznych

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

Temat: Transformacje 3D

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

Trójwymiarowa grafika komputerowa rzutowanie

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

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

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

Transformacje obiektów 3D

2 Przygotował: mgr inż. Maciej Lasota

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

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

OpenGL - tekstury Mapowanie tekstur

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

Potok graficzny i shadery. Hubert Rutkowski

Organizacja pamięci w procesorach graficznych

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

GRK 4. dr Wojciech Palubicki

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

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

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

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

Wprowadzenie do QT OpenGL

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

3 Przygotował: mgr inż. Maciej Lasota

Karty graficzne możemy podzielić na:

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

Nowoczesna OpenGL - rendering wielokątów Rendering wielokątów w kontekście biblioteki SFML

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

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

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

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

Idź do. Spis treści Przykładowy rozdział Skorowidz. Katalog książek. Katalog online Zamów drukowany katalog. Twój koszyk.

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

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

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

Przegląd architektury PlayStation 3

Grafika 3D OpenGL część II

Zatem standardowe rysowanie prymitywów wygląda następująco:

PRZEWODNIK PO PRZEDMIOCIE

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

1. Prymitywy graficzne

Rzutowanie DOROTA SMORAWA

Wykład 5. Rendering (2) Geometria

Transformacje. dr Radosław Matusik. radmat

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

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

SYSTEMY PROJEKCJI STEREOSKOPOWEJ W ANIMACJACH KOMPUTEROWYCH. Techniki projekcji Generowanie wizyjnego sygnału stereoskopowego Instalacje mobilne

płaskie rzuty geometryczne

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

Wykład 12. Wprowadzenie do malarstwa, str. 1 OpenGL Open Graphics Library. OpenGL składa się z

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

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

Programowanie telefonów z Windows Phone 7, cz. 3

Światła i rodzaje świateł. Dorota Smorawa

Grafika komputerowa Tekstury

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

GRK 5. dr Wojciech Palubicki

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

WYDZIAŁ ELEKTRYCZNY. Optoelektroniczne pomiary aksjograficzne stawu skroniowo-żuchwowego człowieka

Teksturowanie (ang. texture mapping)

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

Wprowadzenie do WebGL

Grafika trójwymiarowa

Przyspieszanie sprzętowe

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

GRK 5. dr Wojciech Palubicki

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 12 AiR III

Menu Narzędzia w Edytorze symboli i Edytorze Widoku aparatów

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

OpenGL i wprowadzenie do programowania gier

Biblioteka OpenGL: Wprowadzenie

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

X. ELEMENTY GRAFIKI ANIMOWANEJ

Światło. W OpenGL można rozróżnić 3 rodzaje światła

PRZEWODNIK PO PRZEDMIOCIE

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Wprowadzenie do grafiki komputerowej. W. Alda

Grafika komputerowa i wizualizacja

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

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

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

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

Transkrypt:

Programowanie Procesorów Graficznych Wykład 1 9.10.2012

Prehistoria Zadaniem karty graficznej było sterowanie sygnałem do monitora tak aby wyświetlić obraz zgodnie z zawartościa pamięci. Programiści pracowali na poziomie pojedynczych pixeli.

Czasy nowożytne Współczesne karty graficzne wykonuja żadania narysowania trójkatów. Ponadto sa programowalne.

O czym to będzie Umiejętność wyświetlania modeli 3D w zadanym położeniu i orientacji, z nałożonymi teksturami, oświetlych kilkoma źródłami światła. Sczegóły na http://th.if.uj.edu.pl/ pbialas/opengl/.

Grafika 3D Trójwymiarowe obiekty przedstawiamy na płaszczyźnie poprzez rzutowanie.

Grafika 3D

Rzutowanie perspektywiczne Frustum

Rzutowanie perspektywiczne y 3 2 1 5 4 3 2 1 z 1 2 3

Rzutowanie równolegle

Rzutowanie równoległe i rasteryzacja W trakcie rzutowania następuje rasteryzacja. Rzutowane wielokaty zostaja zamienione na piksele. Zasłaniane linie sa wykrywane za pomoca bufora głebokości.

Interpolacja atrybutów Do karty przesyłane sa wierzchołki. Każdy wierzchołek ma przypisany zestaw atrybutów. takich jak położenie czy kolor. Podczas rasteryzacji do pikseli przypisywane s a atrybuty interpolowane.

OpenGL OpenGL dokonuje rzutowania równoleglego w tzw. znormalizowanych współrzędnych urzadzenia.

Rzutowanie perspektywiczne w OpenGL To w jaki sposób uzyskujemy perspektywę? Musimy sami przekształcić współrzędne tak aby zmieściły się wewnatrz sześcianu znormalizowanych współrzędnych urzadzenia.

Macierz rzutowania Macierz rzutowanie przekształca frustum ustawione wzdłuż osi OZ w sześcian znormalizowanych współrzednych urzadzenia.

Macierz rzutowania współrzędne przestrzeni obcięcia x c x y c z c = P y z, w c 1 x n y n = P z n x c w c y c w c z c w c CPU #include<glm/glm.hpp> #include<glm/gtc/matrix_transform.hpp> glm::mat4 P1 = glm::frustum(left,right,bottom, top, near, far); glm::mat4 P2 = glm::perspective(fovy,aspect,near,far)

Szader wierzchołków Transformacja współrzędnych dokonywana jest w szaderze wierzchołków. #version 330 Vertex Shader in vec4 vvertex; in vec4 vcolor; uniform mat4 PMatrix; out vec4 vvaryingcolor; void main() { vvaryingcolor = vcolor; gl_position = PMatrix*vVertex; }

Atrybuty wierzchołków CPU shader = gltloadshaderpairwithattributes("shader.vp", "shader.fp", 2, GLT_ATTRIBUTE_VERTEX, "vvertex", GLT_ATTRIBUTE_COLOR, "vcolor"); glbegin(gl_triangles); glvertexattrib3f(glt_attribute_color, 1.0, 0.0, 0.0); glvertex3f(1.0f, 1.0f, 0.0f); glvertex3f(1.0f, -1.0f, 0.0f); glvertex3f(0.0f, 0.0f, 2.0f); gleend();

Zmienne uniform #include<glm/gtc/type_ptr.h> CPU PMatrixLocation = glgetuniformlocation(shader, "PMatrix"); if (PMatrixLocation == -1) fprintf(stderr, "uniform PMatrix could not be found\n"); gluniformmatrix4fv(pmatrixlocation, 1, GL_FALSE, glm::value_ptr(p1) );

Szader fragmentów #version 330 Fragment Shader out vec4 vfragcolor; in vec4 vvaryingcolor; void main() { vfragcolor =vvaryingcolor; }

Potok przetwarzania grafiki Uniforms Uniforms Vertex Shader #version 330 Fragment Shader #version 330 Attributes Rasteriser Wierzchołki FrameBuffer

Transformacja widoku x x z x z z x z

Transformacja widoku #include<glm/glm.hpp> #include<glm/gtc/matrix_transform.hpp> #include<glm/gtc/type_ptr.h> glm::mat4 V = glm::lookat(eye,center,up); glm::mat4 VP=P*V; CPU VPMatrixLocation = glgetuniformlocation(shader, "VPMatrix"); if (VPMatrixLocation == -1) fprintf(stderr, "uniform VPMatrix could not be found\n"); gluniformmatrix4fv(vpmatrixlocation, 1, GL_FALSE, glm::value_ptr(vp) );

Szader wierzchołków #version 330 Vertex Shader in vec4 vvertex; in vec4 vcolor; uniform mat4 VPMatrix; out vec4 vvaryingcolor; void main() { vvaryingcolor = vcolor; gl_position = VPMatrix*vVertex; }

Transformacja Modelu x x z z

Transformacja modelu CPU #include<glm/glm.hpp> #include<glm/gtc/matrix_transform.hpp> #include<glm/gtc/type_ptr.h> glm::mat4 T = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f,1.0f,0.0f)); glm::mat4 MVP=P*V*T; VPMatrixLocation = glgetuniformlocation(shader, "MVPMatrix"); if (VPMatrixLocation == -1) fprintf(stderr, "uniform MVPMatrix could not be found\n"); gluniformmatrix4fv(mvpmatrixlocation, 1, GL_FALSE, glm::value_ptr(mvp) );

Szader wierzchołków #version 330 Vertex Shader in vec4 vvertex; in vec4 vcolor; uniform mat4 MVPMatrix; out vec4 vvaryingcolor; void main() { vvaryingcolor = vcolor; gl_position = MVPMatrix*vVertex; }

Transformacja Modelu x x z z

Transformacja Modelu x x z z x z

Transformacja modelu CPU #include<glm/glm.hpp> #include<glm/gtc/matrix_transform.hpp> #include<glm/gtc/type_ptr.h> glm::mat4 T = glm::rotate(glm::mat4(1.0f),kąt); glm::mat4 R = glm::translate(t, glm::vec3(-10.f,-1.0f,0.0f)); glm::mat4 MVP=P*V*R; VPMatrixLocation = glgetuniformlocation(shader, "MVPMatrix"); if (VPMatrixLocation == -1) fprintf(stderr, "uniform MVPMatrix could not be found\n"); gluniformmatrix4fv(mvpmatrixlocation, 1, GL_FALSE, glm::value_ptr(mvp) );

Potok przetwarzania grafiki Uniforms Uniforms Vertex Shader #version 330 Fragment Shader #version 330 Attributes Rasteriser Wierzchołki FrameBuffer