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 (21)

  1. Avenger
    Oceń komentarz:

    -11    

    Opublikowano: 2013-07-23 09:42

    Pokaż komentarz zakopany przez użytkowników

    Czekam na komentarze 70% benchmarka którzy nigdy nie robili niczego w OGL ale twierdzą, że jest znacznie lepszy niż DX.

    Skomentuj

    1. bendyz
      Oceń komentarz:

      18    

      Opublikowano: 2013-07-23 09:55

      Cośtam kiedyś pisałem w OpenGL-u ( W Javie i C++) i twierdzę że jest lepszy od DX. Nie dlatego że jest bardziej funkcjonalny, ale dlatego że jest otwarty, wieloplatformowy i nastawiony na rozwój, a nie na sprzedaż kolejnej wersji systemu operacyjnego jednej firmy.

      Skomentuj

      1. Avenger
        Oceń komentarz:

        -4    

        Opublikowano: 2013-07-23 10:56

        Dlatego trzeba spędzić znacznie więcej czasu robiąc coś w OGL'u niż w DX i dlatego nadal ma mały udział.

        Skomentuj

        1. skoti
          Oceń komentarz:

          1    

          Opublikowano: 2013-07-23 11:15

          Pisanie w OpenGL i Directx wymaga tyle samo czasu, a przepisanie z jednego na drugi obecnie to nie problem (dawniej był to problem, ze względu na inne założenia jak gdzie zaczyna się na ekranie układ współrzędnych, jaka jest kolejność zapisywania macierzy (z góry na dół czy z lewej do prawej) itp., ale nowe wersje OpenGL pozwalają używać konwencji OpenGL jak i DX. Problemem z popularnością OpenGL są sterowniki - nie ma idealnej implementacji, każda z istniejących ma błędy, a zgodnie ze specyfikacją działa średnio około 90% tego co jest w OpenGL 3+.

          Skomentuj

          1. TotallyNormal
            Oceń komentarz:

            0    

            Opublikowano: 2013-07-23 11:29

            Nawet w przypadku sterowników dla Quadro?

            Skomentuj

            1. skoti
              Oceń komentarz:

              2    

              Opublikowano: 2013-07-23 12:15

              Tak - Quadro nie mają wcale lepszej implementacji OpenGL... mają za to poprawki pod dane programy i łatki/pluginy do tych programów wykorzystujące niewykorzystywane przez program możliwości, przez co wydajność jest wyższa, ale nie zgodność ze standardem.

              Skomentuj

    2. bvcxz
      Oceń komentarz:

      4    

      Opublikowano: 2013-07-23 10:07

      Choć pozwala na więcej niż Direct3D, OpenGL nie jest bez wad. Każdemu polecam ten filmik https://www.youtube.com/watch?v=IXxc9yNBpuo Od 1:00:00 jest trochę wskazówek dlaczego D3D jest bardziej lubiany.

      Co do newsu. Takie lubię: długie, ładne, aktualne.

      Skomentuj

    3. TotallyNormal
      Oceń komentarz:

      1    

      Opublikowano: 2013-07-23 10:13

      OGL zawsze miał znacznie nższy narzut i wzorcową responsywność. DX pozwalał na ogarnięcie znacznie większel ilości geometri przy wysokim fps, ale kosztem beznadziejnej responsywności.

      Skomentuj

    4. atom93
      Oceń komentarz:

      1    

      Opublikowano: 2013-07-23 10:27

      OpenGL to jedynie grafika 3D i nic więcej. DirectX to grafika 3D, 2D, dźwięk, obsługa kontrolerów i milion innych funkcji.

      Gry pisze się w DirectX bo gra to nie tylko obraz na ekranie ale także obsługa myszy, gamepada, karty muzycznej itd. Łatwiej używać Direct3D razem z resztą elementów DirectX niż wymieniać jeden klocek w układance i próbować to jakoś połączyć

      Skomentuj

      1. skoti
        Oceń komentarz:

        2    

        Opublikowano: 2013-07-23 11:25

        DirectX to wiele rzeczy, ale obecnie jest wykorzystywane tylko część odpowiedzialna za Input (myszka, klawiatura, gamepad), bo do dźwięku gry wykorzystują OpenAL, a do gier sieciowych Direct Play jest odradzany przez Microsoft i w jego miejsce jest Games for Windows – Live nie związane z samym DX. Co więcej Direct3D nie jest w żaden sposób związana bardziej z XInput niż OpenGL (dotyczy zupełnie innych rzeczy i nie ma żadnego współdzielenia danych).
        Wybór Direct3D nie jest w żaden sposób uzależniony od reszty pakietu DirectX.

        Skomentuj

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

  3. hinson
    Oceń komentarz:

    -1    

    Opublikowano: 2013-07-23 11:10

    Ciekawe czy PS4 będzie to obsługiwało ta wersję?

    Skomentuj

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

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

  6. 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!

21 komentarzy