Oprogramowanie

OpenGL 4.4: specyfikacja nowej wersji interfejsu programowania Khronos Group

przeczytasz w 2 min.

Grupa Khronos opublikowała specyfikację interfejsu programowania OpenGL 4.4. Nowość przynosi kilka przydatnych rozszerzeń.

opengl 4.4 specyfikacja ogłoszenie nowości

Podczas ubiegłorocznej konferencji SIGGRAPH, grupa Khronos ogłosiła specyfikację interfejsu programowania OpenGL 4.3. Teraz wraz z konferencją SIGGRAPH 2013 nadeszła pora na API OpenGL 4.4, które wprowadza kilka istotnych zmian i jest swoistym przetarciem przed wersją 5.0.

Interfejs OpenGL przeznaczony dla stacji roboczych i komputerów osobistych po raz pierwszy ujrzał światło dzienne 21 lat temu, do dzisiaj interfejs jest intensywnie rozwijany i co ważne w pełni darmowy oraz wieloplatformowy, a ostatnio zaczyna przeżywać swój renesans. Niewątpliwą zaletą OpenGL jest wsteczna kompatybilność i niezależność od systemu operacyjnego, a to oznacza, że najnowszą wersję tego API bez problemu da się uruchomić zarówno na starym Windows XP, jak i nowoczesnym Windows 8.1, a także Linuksie, czy też Mac OS X i to nawet na starszego typu układzie graficznym.

opengl 4.4 specyfikacja slajd nowości arb buffer storage

Grupa Khronos, zajmująca się rozwojem OpenGL, zrzesza w swoich szeregach wiele ważnych w branży IT firm, ogłosiła oficjalną specyfikację OpenGL 4.4. Wśród nowości należy wymienić wprowadzenie rozszerzenia ARB_buffer_storage, które odpowiada za utworzenie bezpośredniego bufora dla układów APU, SoC, GPU/CPU i innych procesorów zintegrowanych.

Bufor pozwala programistom kontrolować, gdzie będą przechowywane obiekty – czy zostaną zapisane w pamięci systemowej RAM, czy też trafią do bufora i znajdą się w pamięci VRAM karty graficznej. Podobne rozwiązanie zapowiedział Microsoft w przypadku interfejsu DirectX 11.2, który w odróżnieniu od OpenGL będzie działał jedynie w Xbox One i Windows 8.1.

Kolejną ważną nowością jest ARB_enhanced_layouts (GLSL). Rozszerzenie jak wskazuje nazwa, jest odpowiedzialne za optymalizację układu jednostek cieniowania. Obejmuje to nowe sposoby „pakowania” danych skalarnych obok wektorów, dając programistom większą kontrolę nad zmiennymi wewnątrz i nad blokami pamięci.

opengl 4.4 specyfikacja interfejs api arb bindless texture

Ciekawymi rozszerzeniami są również ARB_sparse_texture oraz ARB_bindless_texture. Pierwsze z nich doskonale sprawdzi się w przypadku pracy teksturami w dużej rozdzielczości tzw. megatekstury. W praktyce oznacza to możliwość ładowania do pamięci tylko części tekstury, a przy jej generowaniu przepuszczeniu jej jakby przez translator, który wykorzystując stworzoną mini mapę, odtworzy resztę tekstury i to w ogromnej rozdzielczości – bez obciążania pamięci VRAM.

opengl 4.4 specyfikacja arb clear texture

Druga wspomniane odpowiada za eliminację luk i ograniczeń nałożonych odgórnie. Od teraz kod będzie mógł już bezpośrednio linkować do konkretnych tekstur na scenie, a ich liczba nie będzie sztucznie ograniczona. To rozwiązanie pozwoli wprowadzić do renderowanej sceny zarówno więcej tekstur, jak i więcej innych elementów, dodatkowo jak podaje Khronos, pozwoli to podnieść wydajność w specyficznych warunkach nawet o 10 razy.

opengl 4.4 specyfikacja api arb compute variable

Z pozostałych równie ważnych nowości można również wymienić GL_ARB_query_buffer_object odpowiedzialną za bezpośrednie buforowanie ważnych obiektów, celem uniknięcia sytuacji, w której CPU czeka na wynik i przez to powstaje opóźnienie w dostarczaniu informacji do GPU.

opengl 4.4 specyfikacja bindless textures

Kolejnym ciekawym rozszerzeniem jest GL_ARB_multi_bind, które odpowiada za umożliwienie masowego „wiązania” lub „rozwiązania” zestawu obiektów z jednego API, zamiast stosowania oddzielnych poleceń dla każdej operacji wiązania. Funkcja może znacząco zmniejszyć odciążenie procesora i zwiększyć wydajność uruchamianej aplikacji.

opengl 4.4 specyfikacja bindles performance

Dodatkowo pojawiły się także liczne usprawnienia i nowe rozszerzenia umożliwiające łatwiejsze portowanie z interfejsu Direct3D właśnie do OpenGL.

opengl 4.4 technologia amd prt translation table

To oczywiście nie wszystkie nowości, jakie pojawiły się w interfejsie OpenGL 4.4. Pełną listę zmian można znaleźć na stronach konsorcjum Khronos Group. Warto dodać, że duży wpływ na rozwój API miały firmy AMD i NVIDIA – co zresztą nie jest zaskoczeniem, gdyż obie należą do wspomnianego konsorcjum, które niebawem powinny wprowadzić obsługę interfejsu do swoich stabilnych wersji sterowników graficznych Catalyst i ForceWare dla Windows i Linuksa. Obecnie NVIDIA udostępniła wczesną wersję deweloperską swoich sterowników z obsługę wspomnianego API.

Źródło: Khronos Group. AnandTech, Phoronix

Komentarze

21
Zaloguj się, aby skomentować
avatar
Komentowanie dostępne jest tylko dla zarejestrowanych użytkowników serwisu.
  • avatar
    Konto usunięte
    1
    Bardzo ciekawy news, ale po doczytaniu do ARB_bindless_texture dałem sobie spokój, bo ten kawałek brzmi bardziej jak z broszury marketingowej i to bardzo nieprezycyjnej.

    Megatekstura, to nie tekstura astronomicznej rozdziellczości, tylko macierz tekstur i nie ma żadnego translatora, tylko transkodowanie. Po transkodowaniu nie są tworzone żadne tekstury ogromenej rozdzielczości, tylko jedna w granicach 4k - 16k, tak aby nie marnować zasobów na rozdzielczości znacznie powyżej 1:1 - stosunku piksela tekstury do piksela ekranu.

    W prezentacji MS była to 'megatekstura' transkodowana do 8k, jak ewitentnie sugeruje ilość wymaganego VRAM.
    • avatar
      skoti
      1
      Zmiany w tej wersji OpenGL bardzo niewielkie (kilka rozszerzeń nie mające wielkiego wpływu na możliwości). Za to nowe rozszerzenia ARB (czyli szybko powinny być wspierane przez Nvidię (już są w sterowniku OpenGL 4.4 wydanym przez Nvidię) i AMD) czyli ARB_bindless_texture (wcześniej tylko Nvidia) i ARB_sparse_texture (wcześniej tylko AMD) to świetne wiadomości i prawie pewne jest, że będą one w core OpenGL 4.5 / 5.

      Jednak jeśli chodzi o same zmiany "core" to zdecydowanie nie są tak interesujące jak zmiany przykładowo w nowej wersji OpenCL czyli 2.0.
      • avatar
        Konto usunięte
        -1
        Ciekawe czy PS4 będzie to obsługiwało ta wersję?
        • avatar
          Kobrar
          -1
          "Niewątpliwą zaletą OpenGL jest wsteczna kompatybilność i niezależność od systemu operacyjnego, a to oznacza, że najnowszą wersję tego API bez problemu da się uruchomić zarówno na starym Windows XP, jak i nowoczesnym Windows 8.1, a także Linuksie, czy też Mac OS X i to nawet na starszego typu układzie graficznym."

          Jest to kłamstwo. Osx "trzyma poziom" i nie ma pełnego wsparcia nawet OGL 3.2. 4.x w ogóle nie ma.
          • avatar
            Konto usunięte
            -11
            Czekam na komentarze 70% benchmarka którzy nigdy nie robili niczego w OGL ale twierdzą, że jest znacznie lepszy niż DX.
            • avatar
              jeomax.co.uk
              0
              Jestem ciekaw, czy wyjdzie jakas gra, w ktorej z poziomu konfigu bedzie mozna ustawic API: DX albo OpenGL i czy beda widcozne jakies roznice. Tak bylo w Il-2 Sturmovik, przykladowo, no i wowczas gra byla ladniejsza przy wykorzystaniu silnika OpenGL (drzewa chocby, ktore wygladaly, jak drzewa) przy zachowaniu tej samej predkosci renderowania.