Blog (62)
Komentarze (4.3k)
Recenzje (0)

OpenGL 4.4 czyli kolejny krok w rozwoju grafiki 3D

@przemo_liOpenGL 4.4 czyli kolejny krok w rozwoju grafiki 3D25.07.2013 21:49

Khronos ogłasza OpenGL 4.4 dokładnie rok po wydaniu OpenGL 4.3 Podczas SIGGRAPH 2013Khronos niezawodnie wydało kolejną specyfikację OpenGL w wersji 4.4. Ta wersja jak i poprzednie z serii 4.x działać powinna na wszystkich kartach graficznych obsługujących OpenGL 4 (jeśli producenci wydadzą zaktualizowane sterowniki).

Wsparcie od producentów GPU

W ciągu jednej doby Nvidia wydała już eksperymentalne sterowniki z nowym OpenGL'em, a AMD wreszcie dogoniło OpenGL 4.3, a obsługa 4.4 jest już zapowiedziana. Dużą zmianą w stosunku do poprzednich wersji "pełnego" OpenGL jest wymóg certyfikowania sterowników pod kątem testów zgodności które Khronos przygotował dla sterowników. Od czasu OpenGL 1.4 (czyli bardzo, bardzo, bardzo dawno temu), OpenGL nie posiadał oficjalnie takiego zestawu (programiści odpowiedzialni za sterowniki musieli takie tworzyć na swoje potrzeby, jednakże były one różne dla różnych producentów, a testy z projektu Mesa, były do nie dawna w ogóle nie zauważane i pokrywają w pełni tylko OpenGL 3.1). Zbiór testów powstał na bazie testów OpenGL ES 3.0 i testów które nadesłali członkowie Khronos, a całość na pewno przyczyni się do zmniejszenia ilości błędów w implementacjach OpenGL'a.

Nowości, czyli to co lubimy najbardziej

Jeśli chodzi o same nowości zaprezenowane przez Khronos, to możemy podzielić je na trzy kategorie:

(Kolejne) ułatwienia w portowaniu kodu z DX:

  • GL_ARB_buffer_storage -> Pozwalającą aplikacji na kontrolę w której pamięci powinny znaleść się dane potrzebne GPU dla renderowania. Przy założeniu, że aplikacja wie najlepiej co będzie robić z tymi danymi, może to zaowocować sporym przyspieszeniem w porównaniu do sytuacji gdy sterowniki błędnie zgaduje. Mechanizm ten był dostępny w DX, choć w mniej rozwiniętej formie.
  • GL_ARB_vertex_type_10f_11f_11f_rev -> Odpowiada formatowi upakowania 3 wierzchołków o mniejszej precyzji
  • GL_ARB_texture_mirror_clamp_to_edge -> Odpowiada trybowi łączenia tekstur z DX

Oprócz ARB_buffer_storage są to zmiany które zaoszczędzą programistom czasu przy przepisywaniu kodu z DX do OpenGL.

Druga kategoria to wymierne zmiany w API:

  • GL_ARB_query_buffer_object -> Pozwala na zostawienie danych z zapytań w GPU, tak, że CPU w ogóle nie musi być zaangażowane, ani też nie jest potrzebna synchronizacja pomiędzy CPU a GPU. Wzrost wydajności kiedy dane z zapytania mają być wykorzystane do kolejnych obliczeń na GPU.
  • GL_ARB_enhanced_layouts -> Pozwala na dokładniejsze określanie formatu danych wejściowych i wyjściowych dla shaderów, tak że nie trzeb ich specyfikować przez API (a kompilator i linker mogą dokładniej wymusić te wymagania).
  • GL_ARB_multi_bind -> To rozszerzenie poświęcone tylko poprawie wydajności. mW OpenGL "bindowanie" to operacja która ustawia w GPU konkretne obiekty jako te które mają być użyte. Takie operacje są kosztowne obliczeniowo (synchronizacja pomiędzy CPU a GPU, czas który sterownik GPU poświęca na przygotowanie operacji, czas który GPU poświęca na ustawianie, który mógł by być poświęcony na renderowanie). Od teraz operacje bindowania mogą być grupowane w jedno API, co powinno znacznie przyśpieszyć niektóre scenariusze.

Trzecia grupa czyli nowe (nie obowiązkowe) rozszerzenia ARB:

  • GL_ARB_bindless_texture -> Rozszerzenie wymyślone przez Nvidię, które zamiast bindowania tekstur do tak zwanych jednostek teksturowania (sprzętowych jednostek które pobierają dane z tekstur, na potrzeby dalszych obliczeń), wprowadzają wirtualne tekstury, gdzie ilość dostępnych adresów dla tekstur idzie w miliony. Odpada kosztowne bindowanie, a i ilość tekstur do których mają dostęp shadery na GPU rośnie o kilka rzędów wielkości
  • GL_ARB_sparse_texture -> Rozszerzenie tym razem od AMD, pozwalające na przechowywanie tylko części tekstury w pamięci GPU, dające kontrole nad tym które konkretnie dane znajdują się w pamięci w ręce programisty. Też potencjalnie ograniczające liczbę bindowań, oraz umożliwiającą lepsze wykorzystanie transferu danych do i z karty GPU.

Sterowniki Nvidi o których wspominałem na początku już obsługują ARB_bindless_texture i ARB_sparse_texture. Sterowniki od AMD jeszcze nie udostępniają żadnego rozszerzenia, jednak ARB_sparse_texture jest oparte o AMD_sparse_texture więc przynajmniej to rozszerzenie powinno szybko się pojawić.

Podsumowanie

Co w praktyce oznacza nowy OpenGL oraz nowe rozszerzenia? Khronos wywiązuje się ze swojej obietnicy szybkiego rozwijania OpenGL. Dodaje również niektóre obiecane możliwości z rewolucyjnego ale zawieszonego "OpenGL 3.0", w sposób ewolucyjny ułatwiając programistom pracę z API. Khronos zaczął też się troszczyć o zgodność sterowników ze standardem. Wyraźnie też widać, że szykuje się nam nowa generacja GPU czego wyrazem są nowe rozszerzenia. OpenGL 4.4 jest więc wyrazem solidnej strategii rozwoju API dla wysokowydajnych obliczeń graficznych. Świat w którym dominuje tylko jedna firma i jedno zamknięte API jest już za nami.

(Teraz czekamy na wieści o oficjalnym API w PS4 :D )

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.