Realistyczny rendering dla potrzeb gier komputerowych

Slides:



Advertisements
Podobne prezentacje
Przygotował: Adrian Walkowiak
Advertisements

Przygotowała Wiktoria Wiśniewska
W Nowym Sączu Symetria (gr. συμμετρια, od συμ, podobny oraz μετρια, miara) – właściwość figury, bryły lub ogólnie dowolnego obiektu matematycznego (można.
Czyli jak zrobić prezentację komputerową?
Małgorzata Pietroczuk
Zespół Szkół w Ostrowie Daniel Maliczowski & Paweł Wróbel.
Odbicie fali Agnieszka Jelińska IA. Cel doświadczenia Ukazanie odbicia się fali po napotkaniu na przeszkodę i zmianie kierunku jej rozchodzenia się.
Tajemnice klawiatury.
Zastosowanie Internetu
DYFRAKCJA ŚWIATŁA NA SIATCE DYNAMICZNEJ
ODYSEJA UMYSŁU.
Krajobraz I jego elementy Prowadzący: mgr Łukasz Stokłosa
ANNA DEC Grupa KrZZTo2011.
Systemy klastrowe inaczej klasterowe.
Portal Systemu Jakości Kształcenia Jak się zalogować? Instrukcja dla pracowników UMCS Przygotowanie: Urszula Wojtczak, Zespół Obsługi Systemu Jakości Kształcenia.
Propozycja siatki godzin Specjalność: Modelowanie i Programowanie Systemów Informatycznych.
Elektronika cyfrowa Prezentacja Remka Kondrackiego.
AUTOR :WOJTEK NOWIK REPORTER : LUK SMIS PATRYK SORMAN PIOTREK COLO (KOLO)
Kolejna gra mająca na celu pokazanie świata kierowców ścigających się w nielegalnych ulicznych wyścigach podrasowanymi do granic możliwości samochodami.
To jest bardzo proste  Lekcja nr 3
WNIOSKI Z PRZEPROWADZONEJ ANKIETY NA TEMAT SAMORZĄDU UCZNIOWSKIEGO ORAZ GAZETKI SZKOLNEJ „KUJONEK”
Podstawy programowania
Szkoła w chmurze.
Jak przygotować prezentację multimedialną?
Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Podyplomowe Studium Programowania i Zastosowań Komputerów DorFin Baza.
Co każdy użytkownik komputera wiedzieć powinien
Można powiedzieć, że nasi dziadowie, jeżeli chodzi o kuchnię i gotowanie byli dużo bardziej ekologiczni niż my czy choćby nasi rodzice. Potrawy były zazwyczaj.
Uwaga !!! Uczniowie SP 32 w Toruniu ! Zapraszamy was i Wasze rodziny do wzięcia udziału w Festynie Zdrowia, który odbędzie się 31 maja 2013 roku podczas.
ALGORYTM.
1.
Opracowanie algorytmów programów komputerowych wykorzystania poszczególnych rodzajów OZE w budownictwie Autorzy: Marek Bieniecki Iwona Gil Mariusz Ćwieczek.
Antonie de Saint-Exupery
Pęd Wielkością charakteryzującą ruch ciała jest prędkość. Zmiana ruchu, tzn. zmiana prędkości, wymaga pokonania oporu bezwładności. Miarą bezwładności.
Projektowanie stanowiska pracy w pozycji siedzącej
Komputerowe prezentacje
xHTML jako rozszerzenie HTML
Instalacja serwera WWW na komputerze lokalnym
HTML Podstawy języka hipertekstowego Damian Urbańczyk.
Ruch jednostajny po okręgu Ciało porusza się ruchem jednostajnym oraz torem tego ruchu jest okrąg.
Optyka Widmo Światła Białego Dyfrakcja i Interferencja
Przygotowali : Szymon, Filip i Piotrek
Jak się uchronić przed zagrożeniami wynikającymi z użytkowania sieci?
J AK ZACZĄĆ PRACĘ Z ?. przed rejestracją Upewnij się, że posiadasz: aktywne konto zainstalowaną przeglądarkę Internet Explorer indywidualny studencki.
SKĄD WIEM, KIM JESTEM? O TOŻSAMOśCI I TOŻSAMOŚCIACH
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
BEZPIECZNY INTERNET. PRZEGLĄDANIE STRON INTERNETOWYCH.
SKALA MAPY Skala – stosunek odległości na mapie do odpowiadającej jej odległości w terenie. Skala najczęściej wyrażona jest w postaci ułamka 1:S, np. 1:10.
Sieci komputerowe. Nowe technologie komputerowe
To śmieszne...
PolGIS jako nowoczesny system do paszportyzacji sieci
Cosmo Green firma usługowo-projektowa mgr inż. Małgorzata Stuła
Budowa programu #include /*instrukcje preprocesora */ #include int main(void) { /*podstawowa funkcja programu */ int a=1; /*deklaracja i inicjalizacja.
Są w życiu chwile, kiedy tak bardzo odczuwamy brak obecności innych,
Zmiany w Przepisach Gry w Piłkę Nożną od 1 września 2006r. Kolegium Sędziów Warmińsko-Mazurskiego Związku Piłki Nożnej.
Narzędzie wspomagające projektowanie aplikacji Proficy iFIX
Uwierzytelnianie (Authentication) Sergiusz Przybylski III r. Informatyka Stosowana.
Temat 1: Składnia języka HTML
Temat 1: Umieszczanie skryptów w dokumencie
PROCEDURA LOGOWANIA SIĘ DO PANELU Ogólnopolski Program Partnerski dla Nauczycieli TWÓRCZY NAUCZYCIEL – TWÓRCZA EDUKACJA 1. Kliknij na wybraną zakładkę
Hanna Michalak ASK V REKLAMA...
WoF PLATFORMA KOMUNIKACJI. WoF jest platformą komunikacji systemem wspomagającym obieg informacji oraz zarządzanie w firmie Zapewnia elektroniczny obieg.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Instrukcje sterujące: W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności.
Komtech Sp. z o.o. Magic Janusz ROŻEJ.
Magic Janusz ROŻEJ Komtech Sp. z o.o.
w/g Grzegorz Gadomskiego
SERCE SPORTOWCA Zespół objawów fizjologicznej, odwracalnej adaptacji u trenujących sporty wytrzymałościowe.
Security & Communications Training Academy | Date 2011 © Robert Bosch GmbH reserves all rights even in the event of industrial property rights. We reserve.
Zapis prezentacji:

Realistyczny rendering dla potrzeb gier komputerowych Projekt i realizacja przykładowego silnika Piotr Turecki Praca magisterska pod kierunkiem dr Witolda Aldy Katedra Informatyki – AGH Kraków 2007

Plan prezentacji Cel pracy Budowa i działanie silnika Przedstawienie możliwości renderera Demonstracja możliwości silnika Podsumowanie

Cel pracy „Profesjonalny” silnik do gier o następujących cechach: Budowa i działanie podobne do produktów komercyjnych Podział na komponenty Możliwość uruchomienia w oknie aplikacji napisanej w MFC Łatwo „obudować” okno silnika w rozbudowany interfejs użytkownika (np. Edytor) Łatwa modyfikacja zawartości gry Widok w edytorze jest identyczny z widokiem z poziomu gry

Cel pracy Nacisk położony na grafikę Pozostałe podsystemy nieobecne lub mocno ograniczone Wykorzystanie najnowszych (już nie) technologii graficznych (DX9.0) Rozbudowany system materiałów Możliwość zdefiniowania praktycznie dowolnego typu powierzchni

Cel pracy Realistyczny rendering Dla potrzeb gier Czyli poprawny fizycznie Dla potrzeb gier Czyli szybki Poprawny fizycznie i szybki Czyli praktycznie niemożliwy Trzeba znaleźć kompromis! Szczegóły w dalszych przykładach

Budowa silnika Podział systemu na komponenty: Silnik (GameEngine.dll) Łatwo uaktualnić do nowszej wersji Gra (Game.dll) Cała logika gry – jw. łatwo uaktualnić Potrzebne dla edytora Moduł uruchomienia gry (Game.exe) Korzysta z Game.dll Edytor świata gry Korzysta z Game.dll i GameEngine.dll

W rzeczywistości edytor korzysta również bezpośrednio z silnika Budowa silnika Schemat zależności między komponentami Game.exe Game.dll GameEngine.dll Editor.exe W rzeczywistości edytor korzysta również bezpośrednio z silnika

Budowa silnika Funkcjonalność silnika udostępniona jest tylko poprzez interfejsy Funkcjonalność podstawowa, z której korzystają wszystkie komponenty znajduje się w bibliotece statycznej

Działanie silnika w grze Gra inicjalizuje silnik Silnik tworzy okno, w którym renderuje świat gry i które pośredniczy w odbiorze wiadomości od systemu operacyjnego Gra uruchamia blokującą metodę Run silnika Od tej pory kod gry uruchamiany jest przez zarejestrowane wcześniej funkcje Obsługa wejścia, obsługa logiki gry

Działanie silnika w edytorze Nie można wywołać blokującej metody ani przejąć kontroli nad myszką i klawiaturą Edytor inicjalizuje silnik (poprzez interfejs gry!) podając jako parametr już utworzone okno Silnik będzie renderował świat w tym oknie Edytor podczas swojego działania: Cyklicznie wywołuje metodę silnika OnFrame Obsługa logiki wewnątrz silnika Wywoływanie zarejestrowanych funkcji gry Przekazuje do silnika wiadomości od myszki i klawiatury Logika gry jest uruchamiana również w edytorze!

Renderer Najbardziej rozbudowana część silnika Najważniejsze zagadnienia System materiałów Rysowanie sceny

Renderer – system materiałów Jak zaprojektować system materiałów tak aby Umożliwiał łatwe definiowanie materiałów Miał duże możliwości Korzystał z najnowszych technologii Obsługiwał najnowsze efekty Implementacja jednego efektu „nie jest trudna” Trudnością jest obsługa wielu efektów naraz!

Zastosowane rozwiązanie Własny prosty język opisu materiałów Łatwo definiować nowe materiały Dwuczęściowa definicja materiału Klasa materiału - plik *.fx Kod dla karty graficznej Opis właściwości oraz wymagań materiału Definicja parametrów materiału Instancja materiału - plik *.ge_mat Określenie używanych tekstur Określenie wartości parametrów

Renderer – system materiałów Właściwość Typ wierzchołków Plik *.fx param: vertex = Normal; param: ViewPos; bool Specular = true; float Shininess = 50; … kod dla karty graficznej Wymaganie Położenie kamery definicja parametrów

Renderer – system materiałów Plik *.ge_mat material "stone01" { tex[DiffuseMap] = "stone/stucco8.jpg"; tex[BumpMap] = "up.tga"; fx = "Solid.fx" Specular = false; Parallax = false; } Używane tekstury Używany plik *.fx Nadpisanie wartości parametrów

Renderer – Rysowanie sceny Typowa scena składa się z setek obiektów pokrytych różnymi materiałami Trzeba ją narysować szybko Dlaczego to jest takie trudne?

Renderer – Rysowanie sceny Jeden obiekt może być pokryty wieloma materiałami Nie da się rysować obiektu jako całości Kolejność rysowania materiałów ma znaczenie Materiały przezroczyste, załamanie światła Lustra wymagają dwukrotnego rysowania całej sceny Woda, zwykłe lustro Dynamiczne cienie Dodatkowy przebieg głębi dla każdego światła Dla punktowych nawet 6 przebiegów Nowoczesne efekty – zajmują więcej czasu Mapowanie nierówności, cienie, woda, rozbudowane oświetlenie Dodanie nowego efektu często wymaga zmiany w obecnej implementacji W kodzie dla karty graficznej i w C++ Np. dynamiczne cienie – Dużo zmian w przebiegu oświetlenia w C++ i w shaderach A to tylko aspekt graficzny Co z fizyką, logiką, zarządzaniem widocznością, całym procesem rysowania sceny, itp.?

Rozwiązanie Podział sceny na atomowe fragmenty Łatwo posortować i wyświetlić tak aby było najmniej zmian stanu karty graficznej Proces renderowania rozbity na osobne przebiegi Przebieg koloru Przebieg oświetlenia Przebieg rysowania głębi Upraszcza obliczenia w każdym przebiegu i umożliwia zastosowanie bardziej rozbudowanych efektów Np. obsługa wielu świateł z dynamicznymi cieniami

Demonstracja możliwości silnika We wszystkich demach: F1 – zrzut ekranu F2 – automatyczna kamera F3 / F4 – następna / poprzednia kamera F5 x2 – zapis danych kamery Enter – przejęcie kontroli nad myszką Esc – zwolnienie myszki Esc x2 – wyjście Sterowanie kamerą – strzałki + myszka

Wyspa C – zmiana oświetlenia

Duża wyspa – wersja 1

Duża wyspa – wersja 2

Symulacja wody na karcie graficznej

Teren Edycja: S – znak modyfikacji +/- A – zmiany: alpha / vertex 1-4 – aktywna warstwa Obsługa: Wyłącz kamerę – F2 Przywłaszcz myszkę - Enter

Załamanie światła

Parallax mapping

Podsumowanie

Realizacja celu Wszystkie główne założenia zostały zrealizowane Budowa i działanie silnika podobne do produktów komercyjnych Zaawansowana grafika Duże możliwości systemu materiałów Zdobyte doświadczenie oraz wiedza Jednak nie wszystko udało się zrealizować Perspektywiczne mapy cienia Efekty wolumetryczne „Porządny” edytor

Wykorzystanie Dla innych programistów Pomoc w wykładach / ćwiczeniach Wiele problemów jest rozwiązanych, zerknięcie do kodu może oszczędzić wiele czasu Pomoc w wykładach / ćwiczeniach Dobry punkt wyjścia (dokumentacja) Demonstracja różnych efektów

Rozbudowa Autor od początku prac nie planował rozbudowy projektu Projekt służył zapoznaniu się z tego typu zadaniem (jak bardzo to jest trudne?) Zmierzenie się z napotkanymi problemami Zebranie doświadczenia Wszystko po to aby napisać następny – dużo lepszy silnik Nie wyklucza to możliwości rozbudowy lub wykorzystania przez innych

Dziękuję za uwagę