OpenGL 4.4: specyfikacja nowej wersji interfejsu programowania Khronos Group

| 2013-07-23

Kategoria: Oprogramowanie Producenci: AMD Khronos

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

Zobacz nowe produkty AMD w marketplace

Nie przegap

Komentarze (18)

  1. TotallyNormal
    Oceń komentarz:

    1    

    Opublikowano: 2013-07-23 10:10

    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.

    Skomentuj

    1. skoti
      Oceń komentarz:

      2    

      Opublikowano: 2013-07-23 12:09

      ARB_bindless_texture nie jest w newsie wcale opisywany - to rozszerzenie pozwala na nielimitowaną ilość tekstur używanych na raz - w DirectX i OpenGL bez tego rozszerzenia ilość jest ograniczona, a dodatkowo trzeba przed użyciem je bindować do odpowiedniego rejestru co daje spory narzut, a z Bindless texture ten narzut jest zupełnie eliminowany, bo CPU nie musi bindować nic, a to GPU po prostu pamięta gdzie co ma i możesz z shadera prosić o daną teksturę bezpośrednio, a nie per tekstura zbindowana na numer X.

      W newsie jest tylko krótki opis ARB_sparse_texture. I tu właśnie mowa o jednej wielkiej teksturze, której wirtualne rozmiary mogą być większe niż możliwości jednostek teksturujących. Nie ma tu mowy o żadnych macierzach/tablicach tekstur - one są w OpenGL czy Dx od dawna. Tu chodzi o jedną dużą wirtualną teksturę do której się pakuje masę tekstur (i uaktualnia całą taką teksturę, za pomocą aktualizacji części tej jednej dużej wirtualnej) i tak to wygląda od strony programisty - ma jedną gigantyczną teksturę na którą wrzuca wszystko. Od strony GPU i sterownika wygląda to trochę inaczej, bo jest to stronicowane w kilku teksturach odpowiednich dla możliwości jednostek teksturujących i na GPU znajdują się w danej chwili tylko potrzebne fragmenty tej gigantycznej wirtualnej tekstury.

      Skomentuj

      1. bvcxz
        Oceń komentarz:

        0    

        Opublikowano: 2013-07-23 12:39

        Żeby było śmieszniej to termin "magatekstury" pokrywa dwie różne techniki: clipmapping (ET:QW) i sparse virtual textures (Rage). No, ale ostatecznie to i to jest jedna wielka tekstura tylko trochę inaczej wykorzystywana.

        Skomentuj

  2. skoti
    Oceń komentarz:

    1    

    Opublikowano: 2013-07-23 12:24

    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.

    Skomentuj

  3. Kobrar
    Oceń komentarz:

    -1    

    Opublikowano: 2013-07-23 14:26

    "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.

    Skomentuj

    1. skoti
      Oceń komentarz:

      1    

      Opublikowano: 2013-07-23 14:39

      @Kobrar:
      "Osx "trzyma poziom" i nie ma pełnego wsparcia nawet OGL 3.2. 4.x w ogóle nie ma."
      To jest kłamstwo! OS X 10.9 ma wsparcie dla OpenGL 4.1. Dla OpenGL 3.2 jest od 10.7. Jednak masz rację, że news nie jest precyzyjny, bo o ile sterowniki na Windows i Linux zależą od producenta sprzętu i daje najnowsze jakie ma, to w wypadku Apple to oni dają implementację OpenGL dla swojego systemu (nie producenci sprzętu piszą tam sterowniki, a twórca systemu) i aktualizują razem z systemem, nie aktualizując starych wersji systemu (nowe sterowniki OpenGL są dostępne tylko w nowych wersjach systemu).

      Skomentuj

  4. jeomax.co.uk
    Oceń komentarz:

    0    

    Opublikowano: 2013-07-23 16:07

    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.

    Skomentuj

    1. skoti
      Oceń komentarz:

      2    

      Opublikowano: 2013-07-23 16:53

      Nie. To już nie te czasy kiedy producent dawał takie opcje - dziś znikają z gier bardziej podstawowe opcje konfiguracyjne i gra sama się konfiguruje. Dziś rynkiem rządzi przymus supportu, a łatwiej dawać wsparcie techniczne do jednej wersji niż do 2ch. Dlatego będą wydawane albo dla DX, albo dla OpenGL (albo oba, ale na różne platformy). Zapewne jeśli gra będzie korzystała z wirtualnych tekstur czy będzie chciała wykorzystać benefity z braku narzutu na bindowanie wybierze OpenGL, a jeśli nie to wybierze Dx bo lepiej przetestowane sterowniki i marketingowo wspieranie najnowszego Dx dobrze sprzedaje grę.

      Skomentuj

      1. bvcxz
        Oceń komentarz:

        0    

        Opublikowano: 2013-07-23 20:32

        Jedyna gra z zapowiedzianych na przyszłość z przełączniczkiem D3D(11)/OGL o jakiej słyszałem to Serious Sam 4. Wszystkie poprzecznie wersje (oprócz pierwszej HD) miały coś takiego i najnowsza też pewnie będzie miała. Inna sprawa, że od dawna przełącznik dostępny jest tylko z konsoli.

        Skomentuj

        1. bvcxz
          Oceń komentarz:

          0    

          Opublikowano: 2013-07-23 20:34

          PS To oczywiście wyjątek na rynku gier. SS3 ma 60 (!) opcji konfiguracji grafiki w menu i niezliczoną liczbę w konsoli (pewnie porównywalną do gier id).

          Skomentuj

Dodaj komentarz

Od komentujących wymagamy przestrzegania netykiety i regulaminu.

Aby dodać komentarz musisz być zalogowany!

18 komentarzy