Wykład 4. Rendering (1) Informacje podstawowe

Podobne dokumenty
Transformacje obiektów 3D

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

GRK 2. dr Wojciech Palubicki

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

Programowanie Procesorów Graficznych

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

Wykład 5. Rendering (2) Geometria

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

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Plan wykładu. Akcelerator 3D Potok graficzny

GRK 4. dr Wojciech Palubicki

PRZEWODNIK PO PRZEDMIOCIE

Trójwymiarowa grafika komputerowa rzutowanie

Wykład 12. Animacja postaci

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

2 Przygotował: mgr inż. Maciej Lasota

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

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

Architektura Procesorów Graficznych

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

Grafika komputerowa i wizualizacja

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

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

Mapowanie sześcienne otoczenia (cubic environment mapping)

Przekształcenia geometryczne. Dorota Smorawa

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

Programowanie gier komputerowych. Tomasz Martyn. Wykład 10. Różności: Cinamatics, Aktorzy kinematyczni, Prefabs, Archetypes

PRZEWODNIK PO PRZEDMIOCIE

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

OpenGL przezroczystość

Grafika trójwymiarowa

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

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

DesignCAD 3D Max 24.0 PL

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

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

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

6 Przygotował: mgr inż. Maciej Lasota

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

Grafika 3D na przykładzie XNA 3.1

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

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

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

Zjawisko widzenia obrazów

Unreal Engine w 24 godziny : nauka tworzenia gier / Aram Cookson, Ryan DowlingSoka, Clinton Crumpler. Gliwice, cop Spis treści.

Bartłomiej Filipek

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

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

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Wprowadzenie do grafiki komputerowej. W. Alda

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

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

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

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

Wprowadzenie do QT OpenGL

1. Prymitywy graficzne

RAPORT KOŃCOWY PROJEKTU

Zaawansowany kurs języka Python

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

Rzutowanie DOROTA SMORAWA

Przyspieszanie sprzętowe

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

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

Rys Odtwarzacz filmu. Możemy także skorzystać z programów służących do odtwarzania filmów np. Windows Media Player.

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

Podstawy 3D Studio MAX

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

PRZYJĘTE ZASADY GRY...3 ZAŁOŻENIA PROJEKTU...4 CZYM JEST I DLACZEGO QT?...5 DIAGRAM KLAS...7 DIAGRAM GRY SINGLE PLAYER...8 DIAGRAM MULTIPLAYERA...

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

Śledzenie promieni w grafice komputerowej

GRK 5. dr Wojciech Palubicki

OpenGL i wprowadzenie do programowania gier

Systemy graficzne. dr inż. Mariusz Szwoch

Grafika Komputerowa, Informatyka, I Rok

gdzie (4.20) (4.21) 4.3. Rzut równoległy

Jak tworzyć dobre wizualizacje? Porady do wykorzystania w programie KD Max. MTpartner s.c.

OpenGL Światło (cieniowanie)

GRK 5. dr Wojciech Palubicki

Shadery. Artur Staszczyk Bartłomiej Filipek

Przegląd architektury PlayStation 3

Wyświetlanie terenu. Clipmapy geometrii

Tworzenie gier na urządzenia mobilne

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

Obraz jako funkcja Przekształcenia geometryczne

Oświetlenie obiektów 3D

Programowanie obiektowe

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

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

KARTA KURSU. Grafika komputerowa

Temat 4. Storyboard i element interfejsu użytkownika Gra w kulki- część 1

Mieszanie kolorów. Dorota Smorawa

Przegląd metod renderingu czasu rzeczywistego dla fotorealistycznych wizualizacji architektonicznych

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

Animowana grafika 3D Laboratorium 1

Wyłączenie redukcji parametrów wytrzymałościowych ma zastosowanie w następujących sytuacjach:

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Zadanie polega na zbudowaniu i wyświetleniu przykładowej animowanej sceny przedstawiającej robota spawalniczego typu PUMA.

Gry komputerowe: efekty specjalne cz. 2

VectraPortal. VectraPortal. wersja Instrukcja użytkownika Podstawowa funkcjonalność serwisu. [czerwiec 2016]

Transkrypt:

Wykład 4. Rendering (1) Informacje podstawowe

Z punktu widzenia dzisiejszego programowania gier: Direct3D jest najczęściej wykorzystywanym przez profesjonalnych deweloperów gier API graficznym na platformie Microsoft Windows jest de facto jedynym API graficznym na platformach konsolowych Microsoft XBox i XBox 360 OpenGL (i jego odmiany, np. OpenGL ES) jest multi-platformowy sterowniki OpenGLa istnieją dla prawie każdego hardwaru 3D jest nadal popularny wśród (na ogół niezawodowych) programistów gier na platformie Microsoft Windows jest standardem de facto na platformach Mac OSX i iphone, linuksowych (PC i wiele smart fonów), Nintendo, Sony Wniosek: Jeżeli tworzona gra jest przeznaczona na różne platformy, wówczas w silniku gry warto utworzyć warstwę abstrakcji renderera, która oddziela konkretne API graficzne od reszty modułów silnika.

Jednakże nawet w ramach konkretnego API bywają duże różnice w odniesieniu do jego poszczególnych wersji, które powodują, że w implementacji interfejsu renderera różne wersje danego API muszą być traktowane odrębnie. Z punktu widzenia przenoszenia gier na różne platformy, największą zmianą było odejście (w obydwu API) od wspierania postulatu wsteczniej kompatybilności. Zmiana ta odbyła się za sprawą usunięcia funkcjonalności stałego potoku graficznego (fixed-function pipeline) na rzecz potoku programowanego (programmable pipeline) przy użyciu shaderów. Nastąpiło to wraz z wprowadzniem wersji OpenGL 3.1 (odpowiednio OpenGL ES 2.0) oraz DirectX 10.

w stałym potoku poszczególne transformacje przekazywane są do potoku za pośrednictwem odpowiednich funkcji API i potok sam stosuje je do nadchodzących wierzchołków w programowalnym potoku OpenGL 2.0 jest prawie tak samo, za wyjątkiem faktu, że o zastosowanie transformacji do wierzchołków musimy zadbać sami w kodzie vertex shadera (transformacje są widoczne jako zmienne wbudowane) w programowalnych potokach OpenGL 3.0 i 4.0 oraz DirectX transformacje przekazywane są do vertex shadera po prostu jako jedne z jego możliwych parametrów (zmienne uniform OpenGL i DirectX 9 lub bufory stałych cbuffer DirectX 10 i 11)

DirectX OpenGL Aby przejść z jednego układu na drugi trzeba zastosować do wizualizowanego świata odbicie zwierciadlane w płaszczyźnie XY. Czasem należy również zmienić kierunek nawinięcia (winding) poligonów w siatkach na przeciwny (w przypadku, gdy stosowany jest backface culling) w celu określenia widocznej strony poligona. Domyślnie OpenGL uznaje poligony o nawinięciu przeciwnym do ruchu wskazówek zegara za ułożone przodem, zaś DirectX wprost przeciwnie.

Przestrzenią modelu (model space, local space) nazywany jest układ współrzędnych skojarzony bezpośrednio z danym modelem, zwykle w procesie modelowania. W konsekwencji, z każdym z modeli związany jest odrębny układ współrzędnych modelu, względem którego określone są wartości współrzędnych wierzchołków siatki wielokątów.

Współrzędne wierzchołków danego modelu określone w przestrzeni modelu przekształcane są do przestrzeni świata (world space, global space), która jest układem współrzędnych związanych z wizualizowaną sceną. Transformacja danego modelu do przestrzeni świata dokonywana jest przy użyciu związanego z tym modelem - przekształcenia świata (world transformation), które jest wyznaczane w procesie komponowania sceny i ew. aktualizowane na bieżąco w przypadku modelu dynamicznie przemieszczającego się po scenie (w przypadku modeli statycznych odwzorowanie jest stałe). Stały potok DirectX Stały potok OpenGL i programowalny OpenGL 2.0 (stos macierzy obecnie usunięty)

Następnie współrzędne wierzchołków przekształcane są do przestrzeni kamery (view space, camera space), która jest układem współrzędnych związanych z punktem położenia kamery (obserwatora) w świecie i kierunkiem jej patrzenia. Transformacja ta dokonywana jest przy użyciu związanego z kamerą - przekształcenia obserwatora (view transformation), które jest wyznaczane w procesie komponowania sceny i następnie aktualizowane na bieżąco gdy kamera przemieszcza się po scenie. Stały potok DirectX Stały potok OpenGL i programowalny OpenGL 2.0 (stos macierzy obecnie usunięty)

Ostrosłup widzenia (frustum) można rozpatrywać jako uproszczony model kamery. Jest on zdefiniowany przez: kąt widzenia (field of view) mierzony zwykle w pionie (fovy) przednią i tylną płaszczyznę obcinania stosunek szerokości do wysokości (aspect ratio) powierzchni (matrycy), na którą jest rzutowany obraz postrzegany przez kamerę

Na podstawie parametrów ostrosłupa widzenia konstruowane jest przekształcenie rzutowania perspektywicznego. 1. Przekształcenie to najpierw sprowadza przy użyciu macierzy rzutowania perspektywicznego - współrzędne wierzchołków w przestrzeni kamery do tzw. jednorodnej przestrzeni obcinania (homogeneous clip space, projection space), w której ma m.in. miejsce operacja obcinania wielokątów wzgl. ostrosłupa widzenia. 2. Następnie ma miejsce operacja dzielenia perspektywicznego współrzędnych wierzchołków, w wyniku której współrzędne te sprowadzane są do układu znormalizowanych współrzędnych urządzenia (NDC). Stosując standardową macierz rzutowania konkretnego API otrzymamy: a. współrzędne x i y [-1, 1] b. współrzędna z [-1, 1] w OpenGL oraz z [0, 1] w DirectX. Stały potok DirectX Stały potok OpenGL i programowalny OpenGL 2.0 (stos macierzy obecnie usunięty) W celu ujednolicenia NDC w zakresie współrzędnej z, przenośny silnik graficzny powinien sam konstruować odpowiednią macierz rzutowania (tzn. nie korzystając z powyższych funkcji API).

W ostatniej fazie potoku przekształceń współrzędne wierzchołków przekształcane są przy wykorzystaniu transformacji widoku (viewport transformation) w celu wyświetlenia we wskazanym prostokątnym obszarze (viewport) okna. Okno może posiadać kilka widoków, np. ukazujących obraz sceny z różnych kamer. DirectX 9 (DirectX 10 i 11 podobnie funkcje RSSetViewports() interfejsów, odpowiednio, ID3D10Device i ID3D11DeviceContext OpenGL

Podstawowe zasoby, które powinien obsługiwać renderer to: geometria wyrażana jest w języku wierzchołków i ich atrybutów (położenie, kolor, normalne, współrzędne tekstur,...) i reprezentowana przez bufory wierzchołków i indeksów współczynniki globalne materiałów opisują globalne właściwości optyczne danej geometrii istotne z punktu widzenia interakcji ze światłem (współczynnik rozproszenia, współczynnik odbicia, etc.) tekstury opisują lokalne właściwości optyczne danej geometrii shadery definiują sposób działania programowalnych części potoku graficznego stany renderingu (render states) określają parametry i właściwości nieprogramowalnych części potoku graficznego, które można zmieniać (mieszanie i test alfa, włączanie i wyłączanie z-bufora, backface culling,...) współczynniki globalne, tekstury, shadery i stany renderingu często wykorzystywane są łącznie do zdefiniowania materiału. światła kamery (i skojarzone z nimi widoki - viewports) bufory renderingu (render targets) - bufor kolorów, z-bufor, stencil bufor,... fonty...