Wyświetlanie terenu. Clipmapy geometrii

Podobne dokumenty
Filtrowanie tekstur. Kinga Laurowska

Plan wykładu. Akcelerator 3D Potok graficzny

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karty graficzne możemy podzielić na:

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

Mikołaj Kania Waldemar Korłub Jakub Krajewski

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Różne rodzaje efektów

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Julia 4D - raytracing

Wykład 4. Rendering (1) Informacje podstawowe

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

Wykład 5. Rendering (2) Geometria

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

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Grafika 3D na przykładzie XNA 3.1

GRK 4. dr Wojciech Palubicki

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

Grafika komputerowa i wizualizacja

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

Wykorzystano fragmenty wykładu Krystyny Dziubich GRAFIKA WEKTOROWA. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska.

Shadery. Artur Staszczyk Bartłomiej Filipek

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)

1 Temat: Vertex Shader

Przyspieszanie sprzętowe

Unity 3D - tworzenie sceny

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

Architektura Komputerów

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

Kwantyzacja wektorowa. Kodowanie różnicowe.

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

Gry komputerowe: efekty specjalne cz. 2

Programowanie Procesorów Graficznych

Bartłomiej Filipek

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Podstawy OpenCL część 2

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

Przegląd architektury PlayStation 3

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

Karty graficzne: budowa, zasada działania, standardy, parametry, dodatkowe funkcje

Przegląd metod renderingu czasu rzeczywistego dla fotorealistycznych wizualizacji architektonicznych

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

Technologie Informacyjne

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Architektura systemów komputerowych Ćwiczenie 3



METODY I TECHNOLOGIA SPRAWDZANIA AKTUALNOŚCI MATERIAŁÓW KARTOGRAFICZNYCH NA POTRZEBY POWSZECHNEJ TAKSACJI

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

Architektura Procesorów Graficznych

GRK 5. dr Wojciech Palubicki

1. Prymitywy graficzne

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Budowa systemów komputerowych

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

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Sphere tracing: integracja z klasycznymi metodami symulacji i renderingu

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Kamil Nowakowski 2011

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

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

WYOBRAŹ SOBIE, ŻE MÓGŁBYŚ WIZUALIZOWAĆ DANE W NIECAŁĄ SEKUNDĘ Z KAŻDEGO MIEJSCA NA ZIEMI.

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

Transformacje obiektów 3D

Podstawy MATLABA, cd.

Potok graficzny i shadery. Hubert Rutkowski

Praca z programem PLANS

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

Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Zaawansowana Grafika Komputerowa

Przegląd architektur kart. Sławomir Król

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

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

Politechnika Poznańska, Instytut Informatyki, SUM-TWO

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

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

Moc płynąca z kart graficznych

Opis zmian w programie Ekspert szkolny w wersji 2.07 z dnia r.

Programowanie gier komputerowych. Tomasz Martyn. Wykład 3.

Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu

8 Przygotował: mgr inż. Maciej Lasota

WYKŁAD 10. kodem pierwotnym krzywej jest ciąg par współrzędnych x, y kolejnych punktów krzywej: (x 1, y 1 ), (x 2, y 2 ),...

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Opis właściwości plików macierzystych (plików TIFF) dla Wojewódzkiej Biblioteki Publicznej im. Hieronima Łopacińskiego w Lublinie

Zastosowanie zobrazowań SAR w ochronie środowiska. ćwiczenia II

Instrukcja przygotowania pliku do deponowania

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

GRK 5. dr Wojciech Palubicki

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

czyli jak porządkować swoje dane

Raport. Michał Andruszko

Trójwymiarowa wizualizacja danych przestrzennych

Transkrypt:

Wyświetlanie terenu Clipmapy geometrii

Rendering terenu Łatwy do zaimplementowania Darmowe zestawy danych Liczne zastosowania: Wizualizacje geograficzne Symulatory Gry

Ogromne ilości danych Gry Od 2x2 do 40x40 km Ograniczona pamięć (konsole, karty graficzne) <150mb 8192x8192 pixeli Potrzebna duża dokładność Dane z dokładnością do metrów

Ogromne ilości danych Wizualizacje, DEM, planety: Rozdzielczość 90m to także za mało Wielkość danych sięga gigabajtów Strumieniowanie z dysku, z internetu

Level of detail Algorytmy LOD dla terenu: Nieregularne siatki (TIN) View-dependent Regularne: Różne sposoby podziału Chunked LOD Tiles

Współczesne GPU GPU coraz szybsze GPU<->CPU wolne! Najlepiej nie blokować zasobów GPU Mapa wysokości tekstura Vertex Texture Fetch Instancing, DX10...

Clipmapping 'Rozszerzenie' mipmap Przechowujemy L poziomów (tekstury) rozmiaru n x n Rysujemy L 'okien' wokół obserwatora, każde 2x większe Dodatkowo poziom L-1 jako zwykłą siatkę Mapujemy wysokości w VS Uaktualniamy tekstury podczas ruchu

Uwagi Nie przesuwamy poziomów płynnie DX9 nie ma filtrowania tekstur w VS Wierzchołki odpowiadają 1:1 tekselom Inaczej teren 'pływa' Musimy odpowiednio podzielić 'okna' Oraz dbać o wysokości na granicach poziomów (zapobieganie T-junctions)

Implementacja-geometria 'Okno' dzielimy na części Rozmiar n = 2 k-1 Wystarczy przechować 3 VB Stałe wymagania pamięciowe Poziomy dopasowane do rozmiarów tekstur m= n 1 4

Mapy wysokości Jedna tekstura dla każdego poziomu (R32 lub R16) Za każdym razem uaktualniamy tylko część poziomów Dodatkowo przechowujemy 2x wieksza mape normalnych (A8R8G8B8) Obliczona na GPU (upsampling mapy wysokości)

Rendering Możemy ominąć najdokładniejsze poziomy 'Okna' sa przesunięte względem poprzednich poziomów Frustum Culling podział 'okien' pozwala wiele wykluczyć

Rendering Vertex Shader T-junctions musimy odpowiednio przesuwać wierzchołki graniczne Potrzebujemy wysokość na niższym poziomie Obliczyć współczynnik α do dodawania wysokości, np. f = ((abs(leveluv.xy-0.5f)*2.0f-w)/(1.0f-w)) alpha = max(0.0f,0.5f*max(f.x,f.y)) H = αhcurr +(1-α)Hcoarser Odpowiednio rozmieszczamy bloki oraz wyliczamy UV względem poziomu oraz świata

Rendering Pixel Shader Mapa normalnych 2x wieksza Inaczej wynik jest rozmyty Trzeba uważać na granicach tak jak z wysokościami Mapa normalnych: A8R8G8B8 zapisane jako (N x,n z,n cx,n cz) Ncz, Ncz normalne z niższego poziomu Zakładamy Ny=Ncy = 1

Instancing Musimy minimalizować wywołania sterownika (np. DrawPrimitive) oraz zmiany stanu DX9 konieczne OpenGL, DX10 wciąż bardzo ważne Jedno wywołanie Draw może rysować obiekt wiele razy SV_InstanceID w PS lub VS indeksuje tablice z danymi Jeden poziom za pomocą 3 wywołań Draw DX10 pozwala na jeszcze więcej!

Uaktualnianie poziomów Uaktualniamy poziom tylko jeśli przesuwa się jego 'okno' Render-To-Texture Najpierw uaktualniamy mapę wysokości, na jej podstawie mapę normalnych 'toroidal access' nie musimy renderować całej mapy możemy tylko część o kształcie krzyża Musimy przesunąć współrzędne tekstur podczas wyświetlania (texture address = WRAP)

Kompresja danych Tworzymy pełną piramidę mipmap T 1,...,T m dla oryginalnych danych (Tm najdokładniejsza) Obliczamy U(Ti) interpolujemy wysokości z mniej dokładnych map (schemat opisany w [1] oraz [2], kod w HLSL na płycie do [2]) Obliczamy Ri=Ti-U(Ti-1) pozostałości (ang. residuals) Przechowujemy tylko najmniej dokładne poziomy Oraz skompresowaną mapę pozostałości Kompresja stratna błędy mogą się kumulować (patrz [1]) Kompresja musi pozwalać na ROI (region of interest) Dokładne informacje w [1] i [2]

Uaktualnianie wysokości Możemy odtworzyć wysokości ze skompresowanych danych Z dysku wczytujemy tylko najniższy poziom Pozostałe interpolujemy i dodajemy pozostałości Zamiast tego możemy dodać szum obliczony na GPU Nieograniczona dokładność Obliczamy dwie wysokości dokładną oraz z niższego poziomu w danym punkcie Np. H = Hcurr + (Hcoarser +256)/512 To samo robimy dla normalnych

Optymalizacje i rozszerzenia Obliczanie normalnych w VS Wykorzystywanie tylko dwóch map wysokości DX10: Texture Arrays rysowanie wszystkich poziomów za pomocą 3 wywołań Draw() Terrain Rendering using Spherical Clipmaps Proceduralne generowanie terenu

Podsumowanie Stosunkowo prosty pomysł Nie taki prosty w implementacji Świetny dla dużych zestawów danych Pozwala na dużą kompresję, przy niewielkiej utracie jakości Równomiernie rozkłada wczytywanie nowych danych na wiele klatek Dla mniejszych terenów (np. gry) możemy znaleźć bardziej odpowiednie algorytmy Nie adaptuje się do cech terenu zazwyczaj jednak nie powinno to być problemem

Dodatkowe informacje [1] Geometry clipmaps: Terrain rendering using nested regular grids, F. Losasso, H. Hoppe. http://research.microsoft.com/~hoppe/proj/geomclipmap/ [2] Terrain Rendering Using GPU-Based Geometry Clipmaps, GPUGems2, Arul Asirvatham and Hugues Hoppe (Microsoft Research) http://http.developer.nvidia.com/gpugems2/gpugems2_chapter02.html [3] http://vterrain.org/ [4] Terrain Rendering Using Geometry Clipmaps, Nick Brettell http://www.cosc.canterbury.ac.nz/research/reports/honsreps/2005/hons_0502.pdf [5] http://gamedev.net/