Wydano OpenGL 3.1

24 marca organizacja Khronos ogłosiła wydanie kolejnej wersji OpenGL – 3.1. Nowa wersja zawiera nową wersję języka programowania shaderów GLSL 1.40 i zawiera szereg drobnych poprawek i usprawnień

Z ciekawszych nowości można wymienić:

  • Texture Buffer Objects – nowy typ tekstury, który przechowuje jednowymiarową tablicę tekseli ustalonego formatu, pozwalając na przekazywanie dużych tablic do shaderów
  • Signed Normalized Textures – nowy, całkowity format tekstur, który reprezentuje wartości z przedziału [-1.0,1.0]
  • Uniform Buffer Objects – pozwalają na szybkie zmiany bloków danych
  • Więcej jednostek teksturujących – teraz wymagane jest, aby było ich co najmniej 16
  • Restartowanie prymitywów – pozwala na łatwe restartowanie i wywoływanie prymitywów, co pozwala na przyspieszenie rysowania siatek
  • Konkretyzacja – możliwość wielokrotnego rysowania tych samych obiektów, ponowne użycie danych wierzchołków pozwala na przyspieszenie renderowania i zmniejszenie potrzebnej liczby wywołań funkcji
  • CopyBuffer API – przyspiesza kopiowanie z jednego obiektu bufora do innego, zwłaszcza użyteczne dla aplikacji współdzielących bufory z OpenCL 1.0 dla zaawansowanych obliczeń graficznych.

Dodatkowo wprowadzono model oznaczania przestarzałych funkcji – wiele funkcji zostało usuniętych z tego wydania, inne zostaly oznaczone jako przestarzałe i nie zaleca się wykorzystywania ich, gdyż zostaną usunięte w przyszłych wydaniach. Jednocześnie, aby zachować wsteczną kompatybilność zaproponowano rozszerzenie ARB dodające wszystkie usunięte funkcje, jednak jego implementacja nie jest obowiązkowa i zależy od dobrej woli producentów sterowników.

Najważniejsze cechy które zostały usunięte/oznaczone jako przestarzałe:

  • definiowanie prymitywów w blokach Begin End
  • wszystkie stałe funkcje do przetwarzania wierzchołków ( Frustum, LoadIdentity, LoadMatrix, LoadTransposeMatrix, MatrixMode, MultMatrix, MultTransposeMatrix, Ortho, PopMatrix, PushMatrix, Rotate, Scale, Translate )
  • bufor akumulacji
  • bufor selekcji
  • listy wyświetlania

AMD zapowiedziało dodanie implementacji OpenGL 3.1 w najnowszej wersji sterowników, Nvidia postanowiła być jeszcze szybsza i zapowiedziała wydanie sterowników z implementacją następnego dnia po jej publikacji

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar stilgar
    stilgar

    jak zwykle nie dodały się tagi… czy mógłbym prosić o prawa do edycji newsów?

    1. Awatar czepol
      czepol

      już masz prawa kontrybutora

      1. Awatar RRH
        RRH

        czepol: kontrybutor to jakiś nowy zawód? 😛

        1. Awatar stilgar
          stilgar

          kontrybutor to osoba od kontrybucji, czyż to nie oczywiste? 🙂

    2. Awatar jellonek
      jellonek

      przy okazji popraw formatowanie, np. wypunktowanie (masz do tego listy)

      1. Awatar stilgar
        stilgar

        no tak, przyzwyczajenie z wikipedii 🙂 poprawiłem.

  2. Awatar stilgar
    stilgar

    Nie wiem jak innym, ale mi to wydanie się wybitnie nie podoba – głównie przez usunięcie tej masy funkcji. Trzeba bedzie przerobić masę programów, wszystkie tutoriale czy książki do OpenGLa staną się nieaktualne…

    Niby będzie to rozszerzenie do kompatybilności… ale jak długo?

    Trzeba będzie się nauczyć tego API od nowa…

    1. Awatar maciek
      maciek

      Niestety OpenGL stara się podążać za aktualnymi trendami i obraża się na cały fixed pipeline 🙁
      Skończy się na tym, że program używający OpenGL będzie po prostu miał funkcje glŁadujSzader i glŁadujDane 😉

      1. Awatar stilgar
        stilgar

        No, dokładnie na to wygląda – przeczytałem przed chwila cały pdf od Khronosa ze specyfikacja 3.1 – jedyne rzeczy jakie nie były oznaczone na czerwono to części o obiektach buforów i shaderach…

        1. Awatar pijaczek
          pijaczek

          @maciek: wręcz przeciwnie – tu akurat nic się nie stało z fixed pipeline, ale odchodzenie od fixed pipeline to właśnie odejście od takich rzeczy jak napisałeś (fixed pipeline to właśnie shadery, które są z góry ustalone), a shadery to właśnie większa kontrola i możliwość definiowania działania shaderów (czego w fixed nie uświadczysz poza przewidzianymi parametrami).

    2. Awatar abc
      abc

      Gdyby nie usuwali to w pewnym momencie by się zrobił śmietnik. A mimo wszystko chwila na aktualizację wiedzy jest, zmiany nie są wprowadzane skokowo. Poza tym chyba te usuwane funkcje mają lepsze odpowiedniki, inaczej by raczej nie usuwali

      1. Awatar stilgar
        stilgar

        Wlasnie chodzi o to, że nie mają żadnych odpowiedników – tak jak maciek napisał, gdy odrzuci sie wszystkie oznaczone funkcje, zostaja tylko te do ladowania danych i shaderów.

        Do tej pory OpenGL robił wiele rzeczy za programiste, po tych zmianach nie będzie robił praktycznie nic, oprócz uruchamiania shaderów i podawania im danych.

        Dodatkowo, te usuniete funkcje sprawiały, że OpenGL był bardzo łatwy do opanowania i szybko można było pisać programy tworzące nawet dość zaawansowane efekty. Teraz to będzie wyższa szkoła jazdy.

        IMHO OpenGL na tym straci i to bardzo – i tak jego popularność nie jest zbyt duża w porównaniu do Direct3D a przez takie utrudnienia może być tylko gorzej.

        1. Awatar sprae
          sprae

          Zamiast tyle biadolić zacznij się uczyć GLSL. A jeśli to niepotrzebne to może używaj jakiegoś wyższego API. Ja tam nigdy nie lubiłem OGL, za to polubiłem Clutter [do akcelerowanej grafiki 2,5D, ale fajny].
          Prawda jest taka, ze układy graficzne działają jak działają i dalsze działanie OGL jak dawniej marnowało by tą moc. W przeciwnym przypadku zapewne znalazła by się grupa biadolących ze OGL się nie rozwija.

        2. Awatar maciek
          maciek

          Te zmiany mogą się wiązać z chęcią przypodobania się branży gier komputerowych: bardzo się programistom gier podobał taki ruch w DirectX.

          Szkoda, że autorzy niektórych innych narzędzi wizualizacyjnych polegali na wysokopoziomowym API języka C, w którym jednym wywołaniem funkcji ustawiało się parametry sceny, i gdzie prosty i spójny mechanizm maszyny stanów zawiadywał sposobem wyświetlania obrazu.

          Właściwie nie jest poważnym problemem sam fakt nie wspierania przez karty bezpośrednio funkcjonalności wysokopoziomowych (jeśli będą one na przykład zaimplementowane > nad < nowymi niskopoziomowymi). Problemem jest zubożenie interfejsu i złamanie wstecznej zgodności.

          OpenGL tradycyjnie nie był jedynie API dostępu do sprzętu graficznego, ale biblioteką graficzną (patrz na nazwę). W czasach, gdy pecetowe karty graficzne obsługiwały jedynie mały podzbiór funkcji "prawdziwego" OpenGLa ta reszta musiała być implementowana software'owo – nikt nie postulował wywalenia tych funkcji z argumentem "twórcy pecetowych gier ich nie potrzebują".

        3. Awatar stilgar
          stilgar

          @sprae: znam GLSL, a takim wyższym API był do tej pory sam OpenGL – to co teraz zrobili to po prostu obcięcie funkcjonalności, przecież shadery można było ładować już wcześniej…

          a co do braku rozwoju – przecież cały czas można było dodawać nowe funkcjonalności, nie usuwając starych

        4. Awatar pijaczek
          pijaczek

          Trzeba było kiedyś posprzątać –
          np. powolny (najgorszy z dostępnych) tryb bezpośredni (glBegin/glEnd), którego i tak nikt nie korzysta i listy wyświetlania których działanie było bardzo nieprzewidywalne – to jak działało zależało od twórcy sterowników (zostają tablice wierzchołków, VBO czy nowe w 3.0 VAO).

          Działania na macierzach w sumie mogły zostać, ale i tak nikt poważnie ich nie traktował, bo były niezbyt wygodne i każdy pisał swoje klasy, które działają o niebo wygodniej, i dodatkowo można było napisać to optymalniej, z użyciem np. sse (teraz zapewne przepisze te działania do openCL).

          Buffor akumulacji ostatni raz użyłem z 5 lat temu. Z bufforem selekcji jest gorzej… trudno przepiszę picking za pomocą fbo ;p.

          Nie rozumiem głosów o zmniejszeniu możliwości fixed pipeline (tak naprawdę to nic nie zmniejszono tylko wywalono z core do rozszerzeń z powrotem), bo ja tu widzę tylko usunięcie zbędnych rzeczy (wszystkie można z powodzeniem zastąpić nowszymi i też bez shaderów) aby nowe firmy, które będą chciały implementować nie musiały się babrać ze starymi funkcjami – na razie dla programistów to nic nie zmienia, bo nVidia i amd mówią, że nie mają żadnych interesów, żeby wywalać wyrzucone ze standardu funkcje i funkcje zostaną (tylko standard będzie bardziej przejrzysty).

          BTW. wywalenie fixed pipeline to normalna droga ewolucji – ten twór miał prawo istnieć tylko jeśli nie było większego dostępu do sprzętu.

        5. Awatar Zombiak
          Zombiak

          Ale, o co wam chodzi, fixed pipeline stoi w miejscu od 10 lat. Jak ktoś chce to niech używa starszej wersji, raczej nie wywalą jej wsparcia ze sterowników właśnie ze względu na wizualizacje. Nowe api to praktycznie tylko shadery, w DX10 też już nie ma fixed nawet pod 9 już od lat się nie stosuje FP, bo to nie ma żadnego sensu. Niestety czasem, aby zbudować coś nowszego lepszego trzeba wyrzucić stare i niepotrzebne graty. Bardzo bym chciał, aby OpenGL był tym lepszym api chociażby ze względu na przenośność no i może sentyment do początków programowania grafy, ale na dzień dzisiejszy (jestem jeszcze PRZED lekturą specyfikacji 3.1 więc może się to zaraz zmienić ;d) DirectX jest o lata świetlne do przodu i Microsoft wykonał kawał niezłej roboty. Akurat, jeżeli idzie o platformy dla programistów nie można im nic zarzucić.

        6. Awatar pijaczek
          pijaczek

          @Zombiak: Nie tyle do przodu o lata świetlne co, implementuje rzeczy, które w openGL programista musi zaimplementować sam, i dx jest napisany w C++ (celniej działa podpowiadanie składni) dlatego łatwiej i szybciej się w nim pisze.

        7. Awatar sprae
          sprae

          stilgar: OGL wcale nie było takim API. Znam ludzi którzy mówili na to "Assembler karty graficznej". Gdyby było na serio API do grafiki 3d, to ładowałbyś obiekt modelu, przekształcał go niezależnie od sceny itp.
          W OGL jest inaczej. Zawsze był uzależniony od rozwoju kart graficznych. Dlatego wymagał pracy w jednym kontekście z samodzielnym definiowaniem wierzchołków. Karty graficzne zmieniły swe działanie i ich API się zmieniło.

      2. Awatar maciek
        maciek

        Od zawsze atutem OpenGLa miała być przenośność, wsteczna kompatybilność i bogate fixed pipeline. W odróżnieniu od DirectXa, będącego po prostu API do gier na Windows OpenGL zawsze celował w szersze spektrum zastosowań, i wielu dostawców narzędzi (inżynierskich, wizualizacyjnych, graficznych) ceniło sobie te zalety.

        1. Awatar SeeM
          SeeM

          Z tego co wiem producenci sprzętu (głównie konsol) i tak forkują OpenGL na swoje potrzeby. Nie może być przecież kod przeniesiony kropka w kropkę z PS3 na Wii i odwrotnie.

        2. Awatar stilgar
          stilgar

          OpenGL to OpenGL, to jest API, tego się nie forkuje…
          Producenci sterowników mają własne implementacje i własne rozszerzenia, tutaj mówimy o zmianie głównego rdzenia całości.

        3. Awatar pijaczek
          pijaczek

          @SeeM: Taa, z ps3 na wii jak wii nie obsługuje OpenGL ES tylko ma własne api (GX jeśli się nie mylę) ;p. Przy okazji na PS3 wiele gier korzysta z command buffer (niższej warstwy niż openGL).

    3. Awatar agent_J
      agent_J

      Stare programy niech sobie używają starego OpenGLa. Każdy szanujący się developer silnika 3D i tak będzie używał shaderów do operowania na obrazie. Z resztą teraz fixed pipeline to i tak nakładka na shadery. Większość "tutoriali" do OpenGLa wytwarza w kółko to samo helloworldware, a dobrego tutoriala do poważniejszych zagadnień ciężko uświadczyć.

    4. Awatar wojtekm
      wojtekm

      Nie no nie dogodzisz. Toż cały lament po wydaniu wersji 3.0 był właśnie o to że zostało tam mnóstwo starego śmiecia, który utrudnia pisanie efektywnych serowników! To co zrobił Khronos było oczekiwane już od dawna i całe szczęście, że w końcu się to stało i to tak z nienacka. Myślę, że po opublikowaniu parę miesięcy temu specyfikacji OpenCL 1.0 i obecnego OpenGL 3.1 można mówić, że zaufanie do tej organizacji powoli wraca po wpadce z OpenGL 3.0.
      OpenGL 3.1 oby dalej w tym kierunku, czekamy niecierpliwie na shadery geometrii w podstawowej specyfikacji. Co by nie mówić GLSL jest jednak ładniejsze od HLSL ;).

      1. Awatar stilgar
        stilgar

        Ograniczanie funkcjonalnosci aby sterowniki działały szybciej przypomina porzucenie C++ dla C, bo się szybciej kompiluje…

        A i nie jest tak, że wszyscy chcą ograniczania ogla, sporo jest przeciwko tym zmianom.

        1. Awatar pijaczek
          pijaczek

          Niezbyt trafne porównanie – już prędzej wyrzucenie wsparcia biblioteki standardowej języka C z kompilatorów C++… prędzej, bo też nie bardzo bo biblioteka standardowa C nie jest ślamazarna jak tryb bezpośredni, a usunięte funkcje z biblioteki standardowej C są dalej używane w przeciwieństwie do tych z openGL ;p

        2. Awatar wojtekm
          wojtekm

          @stilgar: Jakie ograniczanie funkcjonalności? Wręcz przeciwnie to "fixed pipeline" była ograniczona w stosunku do programowalnego potoku i była jego kulą u nogi. Jedynym powodem dla którego to coś przetrwało tyle czasu jest ciągła presja producentów oprogramowania typu CAD/3D modelling, bo średnio im się kalkuluje przepisywanie części istniejącego softu.

        3. Awatar stilgar
          stilgar

          Przecież shadery można było definiować od dawna ( od 1.5 chyba jako rozszerzenie, od 2.0 w standardzie ). Pod tym wzgledem nowa wersja nic nowego nie dodaje, za to usuwa duzy kawal funkcjonalnosci – przeliczanie macierzy i wiele innych rzeczy, które teraz trzeba bedzie robić samemu.

  3. Awatar haael
    haael

    Litości. Restartowanie prymitywów? Instancing? Jakie zmienianie bloków danych? Ten tekst wygląda, jakby był pisany w formacie reprezentującym wartości z przedziału [-1, 1].

    1. Awatar stilgar
      stilgar

      To sie nazywa konstruktywna krytyka…

      Zamiast jęczeć i narzekać lepiej byś zaproponował lepsze tłumaczenia.

      1. Awatar haael
        haael

        No to polskim odpowiednikiem "instancingu" jest konkretyzacja, a "prymityw" to obiekt podstawowy.

        BTW. Jeżeli ten format tekstur ma być całkowity, to nie ma wielkiego sensu podawania przedziału i dopisywania zer po przecinku. Zamiast [-1.0, 1.0] wystarczyło napisać, że wartości należą do zbioru {-1, 0, 1}.

        1. Awatar q
          q

          Litości. Konkretyzacja? Obiekt podstawowy? Kto tak mówi?

        2. Awatar X
          X

          Ja tam w książce PWN miałem "prymityw". Na studiach też miałem "prymityw". Dobrze brzmi, a "obeikt podsatwowy" to sa dwa słowa. Taki informatyczny "zwis męski" 😉

        3. Awatar mby7930
          mby7930

          Eh, to raczej "prymityw" jest właśnie odpowiednikiem "męskiego zwisu ozdobnego", potworka stworzonego w ramach "oczyszczania" języka polskiego.
          W podane wyżej przykłady są niestety przykładem wszechobecności w j.polskim kalek (akurat,pasuje tu i kalka i kaleka) językowych oraz dowodem na brak w wykształceniu ludzi, którzy mają w zamierzeniu nieść "kaganek oświaty" (i tych z wydawnictw i tych z uczelni).

        4. Awatar haael
          haael

          Litości. Konkretyzacja? Obiekt podstawowy? Kto tak mówi?

          Polacy. Na studiach spotkałem się nawet z terminem "urzeczywistnienie", ale to już by była lekka przesada :). Autorem obu tłumaczeń była osoba zawodowo produkująca przekłady książek technicznych z angielskiego na nasze.

          Wiem, że "instancing" jest bardziej dżezzi i że wymawiając to słowo czujemy się obywatelami świata, ale blisko stąd do "drajwania karem po hajłeju".

          Ja tam w książce PWN miałem “prymityw”. Na studiach też miałem “prymityw”.

          Jesteś pewien, że studiowałeś informatykę a nie antropologię :)?

  4. Awatar Eddy Mazzei
    Eddy Mazzei

    I am perpetually thought about this, appreciate it for posting .

  5. Awatar Adena Shehata
    Adena Shehata

    I am not real fantastic with English but I get hold this very easygoing to translate.

  6. Awatar Ester Schlossberg
    Ester Schlossberg

    some really nice and useful info on this web site , besides I conceive the style and design holds excellent features.

  7. Awatar Navi Biglietti per la Grecia
    Navi Biglietti per la Grecia

    Thanks dude. This is fun seeing

  8. Awatar product inventions history
    product inventions history

    There are certainly a lot of details like that to take into consideration. That is a great point to bring up. I offer the thoughts above as general inspiration but clearly there are questions like the one you bring up where the most important thing will be working in honest good faith. I don?t know if best practices have emerged around things like that, but I am sure that your job is clearly identified as a fair game. Both boys and girls feel the impact of just a moment鈥檚 pleasure, for the rest of their lives.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *