Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

GPU Pipeline II Michał Drobot Visual Technical Director Reality Pump.

Podobne prezentacje


Prezentacja na temat: "GPU Pipeline II Michał Drobot Visual Technical Director Reality Pump."— Zapis prezentacji:

1 GPU Pipeline II Michał Drobot Visual Technical Director Reality Pump

2 Optimalizacje geometriiOptimalizacje geometrii RasteryzacjaRasteryzacja Texture MappingTexture Mapping AntialiasingAntialiasing Flow ControlFlow Control Alpha BlendingAlpha Blending Plan wykładu

3 Backface CullingBackface Culling OcclusionOcclusion Optymalizacje geometrii

4 Sprawdzamy kierunek względem, którego ustawiony jest trójkątSprawdzamy kierunek względem, którego ustawiony jest trójkąt Kierunek przeglądania trójkąta ma znaczenieKierunek przeglądania trójkąta ma znaczenie Wyliczanie wektora normalnego trójkątaWyliczanie wektora normalnego trójkąta Iloczyn wektorowy dwóch wektorów reprezentujących krawędzie trójkątaIloczyn wektorowy dwóch wektorów reprezentujących krawędzie trójkąta Backface Culling

5 Iloczyn wektorowyIloczyn wektorowy A x B = CA x B = C C – wektor prostopadły do płaszczyzny wyznaczonej przez A i BC – wektor prostopadły do płaszczyzny wyznaczonej przez A i B Układ prawej dłoniUkład prawej dłoni Backface Culling C A B

6 2 wektory2 wektory V1 = (b1 – a1, b2 – a2, b3 – a3)V1 = (b1 – a1, b2 – a2, b3 – a3) V2 = (c1 – a1, c2 – a2, c3 – a3)V2 = (c1 – a1, c2 – a2, c3 – a3) Iloczyn skalarnyIloczyn skalarny V1 = (x1, x2, x3)V1 = (x1, x2, x3) V2 = (y1, y2, y3)V2 = (y1, y2, y3) V1xV2 = (x2*y3 - x3*y2, x3*y1 - x1*y3, x1*y2 - x2*y1)V1xV2 = (x2*y3 - x3*y2, x3*y1 - x1*y3, x1*y2 - x2*y1) Backface Culling X Y Z a b c

7 Kierunek ruchu wskazówek zegara (clockwise)Kierunek ruchu wskazówek zegara (clockwise) V1 = (5, 5, 0)V1 = (5, 5, 0) V2 = (11, 0, 0)V2 = (11, 0, 0) N = V1 x V2N = V1 x V2 Anti-clockwiseAnti-clockwise N = V2 x V1N = V2 x V1 Backface Culling X Y Z (5,5,0) (11,0,0) (0,0,0) v1 v2 N N N

8 Sprawdzamy czy normalna jest w kierunku kamerySprawdzamy czy normalna jest w kierunku kamery Jeśli tak to renderujemyJeśli tak to renderujemy Nie ma sensu renderować trójkątów tyłem do kameryNie ma sensu renderować trójkątów tyłem do kamery Test dokonujemy przez iloczyn skalarnyTest dokonujemy przez iloczyn skalarny Backface Culling X Y Z

9 A o B = |A||B|cos fiA o B = |A||B|cos fi A o B > 0 => -90* 0 => -90* < fi < 90* Backface Culling A B fi

10 Przeprowadzany sprzętowoPrzeprowadzany sprzętowo Przed PixelShadingiemPrzed PixelShadingiem Backface Culling

11 Rodzina algorytmów klasyfikacji powierzchni widocznychRodzina algorytmów klasyfikacji powierzchni widocznych Na różnych etapach renderingu odrzuca powierzchnie z potoku renderowaniaNa różnych etapach renderingu odrzuca powierzchnie z potoku renderowania Opierają się na metodachOpierają się na metodach Przestrzeni świataPrzestrzeni świata Przestrzeni obrazPrzestrzeni obraz Occlusion Culling

12 Frustum CullingFrustum Culling Przycinanie obiektów do bryły widzialnościPrzycinanie obiektów do bryły widzialności Frustum tworzone jako ostrosłup ścięty, wg parametrów kamery w przestrzeni świataFrustum tworzone jako ostrosłup ścięty, wg parametrów kamery w przestrzeni świata Stosuje się modele aproksymacyjneStosuje się modele aproksymacyjne Bouding BoxBouding Box Bounding VolumeBounding Volume Dla każdego vertexa BB/BV sprawdzamy czy znajduje się w frustumDla każdego vertexa BB/BV sprawdzamy czy znajduje się w frustum Jeśli nie to odrzucamy obiekt z kolejki renderowaniaJeśli nie to odrzucamy obiekt z kolejki renderowania Occlusion Culling

13 Oclussion CullingOclussion Culling Ma za zadanie określenie obiektów, które z punktu widzenia kamery, są zasłaniane przez inne obiektyMa za zadanie określenie obiektów, które z punktu widzenia kamery, są zasłaniane przez inne obiekty Skomplikowane ze względu na ruchomość kamery, bądź obiektówSkomplikowane ze względu na ruchomość kamery, bądź obiektów Occlusion Culling

14 Istnieje wiele metod pozwalających przyśpieszyć sprawdzanieIstnieje wiele metod pozwalających przyśpieszyć sprawdzanie Hierarchiczny podział przestrzeniHierarchiczny podział przestrzeni Zamykanie obiektów w drzewach : OCT, BSP, KD etc.Zamykanie obiektów w drzewach : OCT, BSP, KD etc. Divide and ConquerDivide and Conquer Algorytm WarnockaAlgorytm Warnocka RaytracingRaytracing HOM – Hierarchical Occlusion MapsHOM – Hierarchical Occlusion Maps Hi-ZHi-Z Occlusion Culling

15 Test occluderówTest occluderów W świecie ustawia się niewidzialne obiekty przesłaniające (clipping box)W świecie ustawia się niewidzialne obiekty przesłaniające (clipping box) W momencie tworzenia kolejki do renderowania, obiekty są wycinane przez frustum utworzone przez obiekt przesłaniającyW momencie tworzenia kolejki do renderowania, obiekty są wycinane przez frustum utworzone przez obiekt przesłaniający Efektywnie wycina się obiekty przesłonięte przez occluderEfektywnie wycina się obiekty przesłonięte przez occluder Stosowane w skomplikowanych sceneriach o naturalnych przeszkodach widocznościStosowane w skomplikowanych sceneriach o naturalnych przeszkodach widoczności Miasta – occluder = budynekMiasta – occluder = budynek Teren – occluder = skały, wzgórza dolinyTeren – occluder = skały, wzgórza doliny Occlusion Culling

16 Dodatkowo wykorzystuje się metody PVSDodatkowo wykorzystuje się metody PVS Potentially Visible SetsPotentially Visible Sets Portal RenderingPortal Rendering Podział mapy na określone, przystające do siebie sektoryPodział mapy na określone, przystające do siebie sektory W danej kolejce renderowania brany pod uwagę jestW danej kolejce renderowania brany pod uwagę jest Dany sektorDany sektor Przystający do niego sektor w kierunku patrzenia kameryPrzystający do niego sektor w kierunku patrzenia kamery W danym sektorze przeprowadzamy standardowe frustum cullingW danym sektorze przeprowadzamy standardowe frustum culling W sektorze przystającym przeprowadzamy frustum culling przy użyciu nowego frustum utworzonego z przejścia (portalu) pomiędzy sektorami (np. tunel, drzwi…)W sektorze przystającym przeprowadzamy frustum culling przy użyciu nowego frustum utworzonego z przejścia (portalu) pomiędzy sektorami (np. tunel, drzwi…) Efektywnie wycinamy jedynie widok następnego sektora przez portalEfektywnie wycinamy jedynie widok następnego sektora przez portal Często stosowane w renderingu zamkniętych pomieszczeńCzęsto stosowane w renderingu zamkniętych pomieszczeń Occlusion Culling

17 Rasteryzacja występuje na etapie triangle traversalRasteryzacja występuje na etapie triangle traversal Wykonywana przy użyciu algorytmuWykonywana przy użyciu algorytmu Scanline / Scan ConversionScanline / Scan Conversion Liczne optymalizacje sprzętoweLiczne optymalizacje sprzętowe Znajomość algorytmów przydatna w rasteryzacji softwareowejZnajomość algorytmów przydatna w rasteryzacji softwareowej Rasteryzacja

18 Rasteryzacja

19 Rasteryzacja

20 Dla każdego pixelaDla każdego pixela Sprawdzamy czy znajduje się wewnątrz trójkątaSprawdzamy czy znajduje się wewnątrz trójkąta Test obliczamy poprzez sprawdzenie czy pixel znajduję się algebraicznie w przecięciu płaszczyzn wyznaczonych przez krawędzie trójkątaTest obliczamy poprzez sprawdzenie czy pixel znajduję się algebraicznie w przecięciu płaszczyzn wyznaczonych przez krawędzie trójkąta Zapisujemy do tablic (color buffer, textura, z- buffer…) interpolowane dane z vertexówZapisujemy do tablic (color buffer, textura, z- buffer…) interpolowane dane z vertexów Interpolowane dane zapisywane do tablic i przekazywane do pixel shaderów (interpolatory)Interpolowane dane zapisywane do tablic i przekazywane do pixel shaderów (interpolatory) Rasteryzacja

21 Skanowanie jest przyśpieszane przezSkanowanie jest przyśpieszane przez Wykorzystanie Bounding BoxówWykorzystanie Bounding Boxów Stosowanie połowicznej przestrzeni obliczeńStosowanie połowicznej przestrzeni obliczeń Half-spaceHalf-space Pracowanie na blokach pixeliPracowanie na blokach pixeli 2x2 / 4x4 etc…2x2 / 4x4 etc… Rasteryzacja

22 Wielowymiarowe obrazy nakładane na poligonyWielowymiarowe obrazy nakładane na poligony Textury składają się z texeliTextury składają się z texeli Dopiero później mapowane są na pixeleDopiero później mapowane są na pixele Zwykle obrazy 2DZwykle obrazy 2D Cube, VolumetricCube, Volumetric Są jedynie różnymi rodzajami pakowania i adresowania obrazówSą jedynie różnymi rodzajami pakowania i adresowania obrazów Przechowywane w wielu formatach i metodach kompresji w zależności od zastosowaniaPrzechowywane w wielu formatach i metodach kompresji w zależności od zastosowania DXT1, DXT5 – GPU mogą pracować na formatach skompresowanychDXT1, DXT5 – GPU mogą pracować na formatach skompresowanych 8888, , 1616, …8888, , 1616, … Etc…Etc… Texture mapping

23 Geometria (vertex) posiada kilka atrybutówGeometria (vertex) posiada kilka atrybutów PozycjaPozycja Wektor normalnyWektor normalny KolorKolor Koordynaty texturKoordynaty textur Koordynaty textur dla każdego vertexaKoordynaty textur dla każdego vertexa (u,v) zwykle z zakresu [0;1](u,v) zwykle z zakresu [0;1] (0,0) – górny lewy róg(0,0) – górny lewy róg Texture mapping

24 {v0.x, v0.y, v0.z, …, 1, 0}{v0.x, v0.y, v0.z, …, 1, 0} {v1.x, v1.y, v1.z, …, 1, 1}{v1.x, v1.y, v1.z, …, 1, 1} {v2.x, v2.y, v2.z, …, 0, 0}{v2.x, v2.y, v2.z, …, 0, 0} {v3.x, v3.y, v3.z, …, 0, 1}{v3.x, v3.y, v3.z, …, 0, 1} Texture mapping v0 v3 v1 v2

25 {v0.x, v0.y, v0.z, …, 1, 0}{v0.x, v0.y, v0.z, …, 1, 0} {v1.x, v1.y, v1.z, …, 1, 0}{v1.x, v1.y, v1.z, …, 1, 0} {v2.x, v2.y, v2.z, …, 1, 1}{v2.x, v2.y, v2.z, …, 1, 1} {v3.x, v3.y, v3.z, …, 0, 1}{v3.x, v3.y, v3.z, …, 0, 1} Texture mapping v0 v3 v1 v2

26 Istnieje wiele opcji konfiguracji sampleraIstnieje wiele opcji konfiguracji samplera Tryb samplowaniaTryb samplowania PointPoint LinearLinear … Tryb adresowania UVTryb adresowania UV Clamp – przycina wartość (u,v) do [0;1]Clamp – przycina wartość (u,v) do [0;1] Wrap – frac(u,v) – zawija textureWrap – frac(u,v) – zawija texture … Texture mapping

27 {v0.x, v0.y, v0.z, …, 0, 0}{v0.x, v0.y, v0.z, …, 0, 0} {v1.x, v1.y, v1.z, …, 3, 0}{v1.x, v1.y, v1.z, …, 3, 0} {v2.x, v2.y, v2.z, …, 3, 4}{v2.x, v2.y, v2.z, …, 3, 4} {v3.x, v3.y, v3.z, …, 0, 4}{v3.x, v3.y, v3.z, …, 0, 4} Texture mapping v0 v3 v1 v2

28 Texele zwykle nie mapują się 1:1 z pixelamiTexele zwykle nie mapują się 1:1 z pixelami Jeśli pixel jest większy od texelaJeśli pixel jest większy od texela Należy przerowadzić minifikacje textury (pomniejszenie)Należy przerowadzić minifikacje textury (pomniejszenie) Jeśli pixel jest mniejszy od texelaJeśli pixel jest mniejszy od texela Należy przeprowadzić magnifikacje textury (powiększenie) Należy przeprowadzić magnifikacje textury (powiększenie) Filtrowania przeprowadzamy metodamiFiltrowania przeprowadzamy metodami Nearest Neighbour – najbliższego sąsiadaNearest Neighbour – najbliższego sąsiada Bilinear – liniową w dwóch wymiarach – średnia ważona najbliższych texeli ze względu na odległość od punktu samplowaniaBilinear – liniową w dwóch wymiarach – średnia ważona najbliższych texeli ze względu na odległość od punktu samplowania Texture mapping

29 Texele zwykle nie mapują się 1:1 z pixelamiTexele zwykle nie mapują się 1:1 z pixelami Jeśli pixel jest większy od texelaJeśli pixel jest większy od texela Należy przerowadzić minifikacje textury (pomniejszenie)Należy przerowadzić minifikacje textury (pomniejszenie) Jeśli pixel jest mniejszy od texelaJeśli pixel jest mniejszy od texela Należy przeprowadzić magnifikacje textury (powiększenie) Należy przeprowadzić magnifikacje textury (powiększenie) Filtrowania przeprowadzamy metodamiFiltrowania przeprowadzamy metodami Nearest Neighbour – najbliższego sąsiadaNearest Neighbour – najbliższego sąsiada Bilinear – liniową w dwóch wymiarach – średnia ważona najbliższych texeli ze względu na odległość od punktu samplowaniaBilinear – liniową w dwóch wymiarach – średnia ważona najbliższych texeli ze względu na odległość od punktu samplowania Texture mapping

30 Mip-mappingMip-mapping Przy skrajnych minifikacjach na jeden pixel przypada wiele texeliPrzy skrajnych minifikacjach na jeden pixel przypada wiele texeli Ilość wymaganych do uśrednienia wartości jest zbyt duża dla zachowania wydajnościIlość wymaganych do uśrednienia wartości jest zbyt duża dla zachowania wydajności Przygotowuje się uprzednio wyliczone mip-mapy – uśrednione wersje danej textury w mniejszych rozdzielczościachPrzygotowuje się uprzednio wyliczone mip-mapy – uśrednione wersje danej textury w mniejszych rozdzielczościach Mogą być generowane automatycznie przez APIMogą być generowane automatycznie przez API Przyśpieszają mapowanie obiektów oddalonych od kameryPrzyśpieszają mapowanie obiektów oddalonych od kamery Mniejsze textury (mip mapy)Mniejsze textury (mip mapy) Mniej texeli – szybsze filtrowanie i cacheowanieMniej texeli – szybsze filtrowanie i cacheowanie Posiadają wymiary : 2^n, 2^n-1, 2^n-2 … 2^1, 2^0Posiadają wymiary : 2^n, 2^n-1, 2^n-2 … 2^1, 2^0 W zależności od stopnia minifikacji wybierana najbliższa mip-mapaW zależności od stopnia minifikacji wybierana najbliższa mip-mapa Pamięciowo zajmują dodatkowo 1/3 pamięci danej texturyPamięciowo zajmują dodatkowo 1/3 pamięci danej textury Texture mapping

31 Mip-mappingMip-mapping Z racji swoich wymiarów filtrowanie przy pomocy mip-map jest izotropoweZ racji swoich wymiarów filtrowanie przy pomocy mip-map jest izotropowe Uniformiczne w każdym kierunkuUniformiczne w każdym kierunku Jeśli płaszczyzna jest pochyła względem kamery należy przeprowadzić mocniejsze filtrowanie tylko w jednym kierunkuJeśli płaszczyzna jest pochyła względem kamery należy przeprowadzić mocniejsze filtrowanie tylko w jednym kierunku Mip-mapping wybierze rozmiar mipmapy pasujący do najbliższego pomniejszeniaMip-mapping wybierze rozmiar mipmapy pasujący do najbliższego pomniejszenia Pixele prostopadłe do kierunku pochylenia płaszczyzny będą niepotrzebnie filtrowane (rozmyte)Pixele prostopadłe do kierunku pochylenia płaszczyzny będą niepotrzebnie filtrowane (rozmyte) Texture mapping

32 Tri-linear filteringTri-linear filtering Dokonuje filtrowania bilinearnego w dwóch najbliższych mipmapachDokonuje filtrowania bilinearnego w dwóch najbliższych mipmapach Następnie interpoluje uzyskane wartości względem odległości między mipmapamiNastępnie interpoluje uzyskane wartości względem odległości między mipmapami Poprawia jakość mipmappinguPoprawia jakość mipmappingu Nie wpływa na izotropowość filtrowaniaNie wpływa na izotropowość filtrowania Texture mapping

33 Anizotropic filteringAnizotropic filtering Filtrowanie anizotropowe oblicza kształt mapowanej powierzchniFiltrowanie anizotropowe oblicza kształt mapowanej powierzchni Względem kształtu dokonuje odpowiednichń bi-/tri- linearnychWzględem kształtu dokonuje odpowiednichń bi-/tri- linearnych Kształt jest wyliczany przez dodatkowe sample dookoła samplowanego miejscaKształt jest wyliczany przez dodatkowe sample dookoła samplowanego miejsca Liczba dodatkowych sampli zależy od odległości oraz kąty patrzenia na płaszczyznę względem kameryLiczba dodatkowych sampli zależy od odległości oraz kąty patrzenia na płaszczyznę względem kamery Texture Mapping

34 Anizotropic filteringAnizotropic filtering Koszt wynosi x razy sample przewidziane dla typu podrzędnego samplowaniaKoszt wynosi x razy sample przewidziane dla typu podrzędnego samplowania Bilinear – 4 sampleBilinear – 4 sample Trilinear – 2 * 4 sampleTrilinear – 2 * 4 sample Anizotropic - Trilinear AFx4 – 4 * 2 * 4 = 32 sampleAnizotropic - Trilinear AFx4 – 4 * 2 * 4 = 32 sample Zapewnia optymalną jakość mapowania powierzchni pod kątem do kameryZapewnia optymalną jakość mapowania powierzchni pod kątem do kamery Duży narzut obliczeniowy oraz pamięciowy ze względu na olbrzymią dodatkową ilość samplowańDuży narzut obliczeniowy oraz pamięciowy ze względu na olbrzymią dodatkową ilość samplowań Texture Mapping

35 Rasteryzacja zamienia dane wektorowe z przestrzeni ciągłej na dyskretną – pixeleRasteryzacja zamienia dane wektorowe z przestrzeni ciągłej na dyskretną – pixele Dochodzi do problemu mapowania danych na pixelDochodzi do problemu mapowania danych na pixel Efektem są błędy aliasinguEfektem są błędy aliasingu Poszarpane krawędziePoszarpane krawędzie Brak ostrości texturBrak ostrości textur Antialiasing

36 Algorytm rasteryzacji musi zadecydować czy pixel należy do trójkątaAlgorytm rasteryzacji musi zadecydować czy pixel należy do trójkąta Decyzja zachodzi względem środka pixelaDecyzja zachodzi względem środka pixela Antialiasing

37 Najprostszą metodą rozwiązania problemu jest overs/super – samplingNajprostszą metodą rozwiązania problemu jest overs/super – sampling Renderowanie obrazu w większej rozdzielczości (2xH, 2xV, 2x, 4x…)Renderowanie obrazu w większej rozdzielczości (2xH, 2xV, 2x, 4x…) Przy odczycie obrazu pomniejszanie go i uśrednianiePrzy odczycie obrazu pomniejszanie go i uśrednianie Duży narzut pamięciowy, przepustowości oraz obliczeńDuży narzut pamięciowy, przepustowości oraz obliczeń X razy większy bufor koloru i ZX razy większy bufor koloru i Z Antialiasing

38 SupersamplingSupersampling Antialiasing

39 Antialiasing

40 Anitaliasowane krawędzieAnitaliasowane krawędzie Brak przeskoku pixeliBrak przeskoku pixeli Możliwe poprawienie jakości texturMożliwe poprawienie jakości textur KosztowneKosztowne Zwykle powoduje lekkie rozmycieZwykle powoduje lekkie rozmycie Textury mogą być filtrowane osobno poprzez filtrowanie anizotropowe AFTextury mogą być filtrowane osobno poprzez filtrowanie anizotropowe AF Antialiasing

41 MSAAMSAA Multi Sample Anti AliasingMulti Sample Anti Aliasing Dowolna metoda SSAA, która wykorzystuje nierówne bufowryDowolna metoda SSAA, która wykorzystuje nierówne bufowry Zwykle bufory koloru są mają klonowane koloryZwykle bufory koloru są mają klonowane kolory Średnia nie różni się od braku SSAAŚrednia nie różni się od braku SSAA Z bufor posiada wartość SSAAZ bufor posiada wartość SSAA Efektywnie trójkąty nie mają poszarpanych krawędziEfektywnie trójkąty nie mają poszarpanych krawędzi Tyle samo pamięciTyle samo pamięci Mniejszy narzut obliczeniowy oraz transferuMniejszy narzut obliczeniowy oraz transferu Antialiasing

42 Wszystkie wymienione metody wiążą się z licznymi ograniczeniami wydajności jak i przepustowościWszystkie wymienione metody wiążą się z licznymi ograniczeniami wydajności jak i przepustowości Zależy od konstrukcji rendereraZależy od konstrukcji renderera Jeśli dane nie będące na krawędzi maja po uśrednieniu ten sam wynik, po co w ogóle wykonywać obliczenia?Jeśli dane nie będące na krawędzi maja po uśrednieniu ten sam wynik, po co w ogóle wykonywać obliczenia? Antialiasing

43 EdgeAAEdgeAA Opiera się na 2 etapachOpiera się na 2 etapach Wykrycie krawędzi obiektów na ekranieWykrycie krawędzi obiektów na ekranie Przeprowadzenie obliczeń/SSAA jedynie na wykrytych krawędziachPrzeprowadzenie obliczeń/SSAA jedynie na wykrytych krawędziach Skomplikowane wykrywanie krawędziSkomplikowane wykrywanie krawędzi Szybkie z nowymi kartamiSzybkie z nowymi kartami Metoda zapewniająca optimum wydajności i jakościMetoda zapewniająca optimum wydajności i jakości Antialiasing

44 Istnieją różne metody samplowania z obrazu o wyższej rozdzielczościIstnieją różne metody samplowania z obrazu o wyższej rozdzielczości Regular gridRegular grid Oriented GridOriented Grid Poisson SamplingPoisson Sampling JitteredJittered MixedMixed … Antialiasing

45 Pipeline Flow controlFlow control Wykorzystanie IF..Else (loop)Wykorzystanie IF..Else (loop) Static flow controlStatic flow control Bazuje jedynie na stałychBazuje jedynie na stałych Na podstawie stałej decyduje o wyborze ścieżki wykonawczejNa podstawie stałej decyduje o wyborze ścieżki wykonawczej Dynamic flow controlDynamic flow control Bazuje na zmiennych dynamicznychBazuje na zmiennych dynamicznych Na ich podstawie dokonuje wyboru ścieżkiNa ich podstawie dokonuje wyboru ścieżki Utrudnia operacje adresowania, liczenia gradientów itp..Utrudnia operacje adresowania, liczenia gradientów itp.. Ręczne liczenie adresowania dla texturRęczne liczenie adresowania dla textur

46 Pipeline Flow controlFlow control Kompilator na podstawie heurystyk (ilośc instrukcji, typ, odwołania…) może zdecydować o statycznym rozwiązaniu (unroll, wykonanie obu gałęzi IF i wybranie logiczne wyniku) bądź dynamicznym (loop, branch)Kompilator na podstawie heurystyk (ilośc instrukcji, typ, odwołania…) może zdecydować o statycznym rozwiązaniu (unroll, wykonanie obu gałęzi IF i wybranie logiczne wyniku) bądź dynamicznym (loop, branch) Możemy to wymuszać dyrektywami jeśli wiemy co robimyMożemy to wymuszać dyrektywami jeśli wiemy co robimy [branch] [flatten] [loop] [unroll] etc…[branch] [flatten] [loop] [unroll] etc…

47 Pipeline Branch processor (>= SM 3.0)Branch processor (>= SM 3.0) Umożliwia wprowadzenie architektury MIMDUmożliwia wprowadzenie architektury MIMD Operacje na fragmentach są przeprowadzane w bloczkach (np. 32x32, 8x8, 2x2)Operacje na fragmentach są przeprowadzane w bloczkach (np. 32x32, 8x8, 2x2) Każdy z bloczków za pomocą Branch processora i tzw. Flow control może wykonać odmienną ścieżkę wykonawcząKażdy z bloczków za pomocą Branch processora i tzw. Flow control może wykonać odmienną ścieżkę wykonawczą Jeśli którykolwiek texel z bloczku musi wybrać odmienną drogę od innych,obliczenia są wykonywane dla wszystkich texeli i wszystkich drógJeśli którykolwiek texel z bloczku musi wybrać odmienną drogę od innych,obliczenia są wykonywane dla wszystkich texeli i wszystkich dróg Wprowadza fizyczną obsługę dynamicznych if, else, for, while itp.Wprowadza fizyczną obsługę dynamicznych if, else, for, while itp. Narzut obliczeniowy < 6 cykliNarzut obliczeniowy < 6 cykli

48 Pipeline Scan converter dzieli trójkąt na bloki 8x8Scan converter dzieli trójkąt na bloki 8x8 Każdy blok jest dzielony dalej na quady 2x2Każdy blok jest dzielony dalej na quady 2x2 Mogą wśród nich wystąpić martwe pixeleMogą wśród nich wystąpić martwe pixele Sprawa komplikuje się przy wykorzystaniu flow controlSprawa komplikuje się przy wykorzystaniu flow control W jednym bloku mogą być pixele wymagające odmiennych ścieżek wykonawczych == wykonanie wszystkich ścieżek i wybór logiczny rezultatuW jednym bloku mogą być pixele wymagające odmiennych ścieżek wykonawczych == wykonanie wszystkich ścieżek i wybór logiczny rezultatu

49 Pipeline Wybór ścieżki powinien być względnie oczywisty dla GPUWybór ścieżki powinien być względnie oczywisty dla GPU Quady 2x2 zawierające różne ścieżki wykonawcze zostaną wykonane w całości i wybrany właściwy logicznie wynikQuady 2x2 zawierające różne ścieżki wykonawcze zostaną wykonane w całości i wybrany właściwy logicznie wynik Dążymy do lokalizacji wykonań koduDążymy do lokalizacji wykonań kodu

50 Alpha Blending Efekty przeźroczystościEfekty przeźroczystości Kolor źródła jest blendowany (mieszany) z kolorem celuKolor źródła jest blendowany (mieszany) z kolorem celu Wybierane są operatory oraz mnożniki : ONE, ZERO, +, -, * …Wybierane są operatory oraz mnożniki : ONE, ZERO, +, -, * … Istnieje wiele metod blendowaniaIstnieje wiele metod blendowania AdditiveAdditive C = Src * (1,1,1,1) + Dst * (1,1,1,1) = Src + DstC = Src * (1,1,1,1) + Dst * (1,1,1,1) = Src + Dst SubstractiveSubstractive C = Src * (1,1,1,1) – Dst * (1,1,1,1) = Src – DstC = Src * (1,1,1,1) – Dst * (1,1,1,1) = Src – Dst MultiplicativeMultiplicative C = Src * DstC = Src * Dst Alpha Blending (różne wersje ze względu na alpha)Alpha Blending (różne wersje ze względu na alpha) C = Src.rgb * Src.a + Dst * (1 – Src.a)C = Src.rgb * Src.a + Dst * (1 – Src.a)

51 Podsumowanie For more information contact me Slides will be available at Drobot.org

52 Questions ?


Pobierz ppt "GPU Pipeline II Michał Drobot Visual Technical Director Reality Pump."

Podobne prezentacje


Reklamy Google