.[ ČeskéHry.cz ].
OpenGL 3.2 je venku, hromada nových funkcí

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Novinky / Zprávičky
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 4. srpen 2009, 06:13:26    Předmět: OpenGL 3.2 je venku, hromada nových funkcí Odpovědět s citátem

OpenGL ARB (sdružení pracující na OpenGL) splnilo slib a za necelý půlrok vydalo další aktualizaci OpenGL, verzi 3.2, pro větší výkon, lepší vizuální kvalitu, akcelerované zpracování geometrie a jednodušší portování Direct3D aplikací.

V této verzi jsou zavedeny 2 profily:
  • Core - Obsahuje pouze funkce týkající se nejnovějších technologií, které se dnes běžně používají a které hardware efektivně podporuje.
  • Compatibility - Obsahuje všechny funkce od OpenGL 1.0, vhodný pro zpětnou kompatibilitu se starším kódem, který chce zároveň využívat funkcionalitu verze 3.2. (kromě zahrnutí starých funkcí bylo třeba navíc dodefinovat interakce mezi starými a těmi novými)

Profil se zadává při vytváření renderovacího kontextu a je definován obecně jako modifikace API přizpůsobená potřebám trhu (v budoucnu se můžeme dočkat např. osekaného profilu pro konzole apod).

OpenGL Shading Language verze byla povýšena na 1.5 kvůli geometry shaderům a multisample texturám (viz dále).

Download:

Seznam nových funkcí v OpenGL 3.2:
  • GL_ARB_geometry_shader4
    Geometry shadery pro programovatené zpracování geometrie po jednotlivých primitivech (body, čáry, trojúhelníky).
  • GL_ARB_texture_multisample
    Podpora 2D multisample textur (včetně polí 2D textur), do kterých se dá renderovat a ze kterých je možno v shaderu číst jednotlivé vzorky a provádět multisampling ručně např. při HDR renderingu a deferred shadingu. Multisampling depth-stencil textur není povinný a jeho podpora jde zjistit.
  • GL_ARB_sync
    Objekty pro synchronizaci s GPU (jako fences nebo events v CUDA), tj. lze označit místa v kódu a později k nim synchronizovat nebo se zeptat, zda GPU všechny předcházející příkazy už zpracovalo. Hodí se také pro přesné měření času jednotlivých částí renderingu.
  • GL_ARB_seamless_cube_map
    Nový mód filtrování cubemap, který bere pixely i z více stran zároveň umožňující korektní bilineární filtr na hranách cubemapy.
  • GL_ARB_depth_clamp
    Vypíná ořezávání primitiv na přední a zadní ořezávací rovině, namísto toho se upraví hodnoty zbufferu do povoleného rozsahu a primitiva se vyrenderují. Vhodné pro některé algoritmy jako např. stencil stíny.
  • GL_ARB_draw_elements_base_vertex
    Přidává nové DrawElements* funkce, které umožňují zadat offset indexu u indexovaných vertexu. (umožňuje vyrenderovat např. podmnožinu modelu, kde by bylo potřeba indexy upravit, nebo pokud je ve vertex bufferech více modelů uložených za sebou)
  • GL_ARB_vertex_array_bgra
    Podpora obraceného pořadí barevných kanálu tj. BGR a BGRA u barev vertexů. (jako v DX)
  • GL_ARB_fragment_coord_conventions
    Umožňuje upravit přímo v shaderu zaběhnuté konvence souřadnic přo zpracování pixelů, např. nastavení počátku souřadnic na levý horní roh. (jako v DX)
  • GL_ARB_provoking_vertex
    Umožňuje nastavit, ze kterého vertexu se u flat stínování vezme barva a jiné atributy vertexu, které se použijí pro výpočet pixelů celého primitiva (čára, trojúhelník). (pro kompatibilitu s DX) OpenGL dříve používalo atributy z posledního vertexu, Direct3D zase z prvního.

Pokud chce výrobce hardwaru podporovat jen část funkcí, přidá jen názvy extenzí samostatně, což se dá považovat za výtažek z Core specifikace.

Následuje seznam funkcí, které nejsou součástí OpenGL 3.2, ale byly vydány ve stejnou dobu sdružením ARB (začlení se, až se jejich užitečnost ověří v praxi):
  • GL_ARB_draw_buffers_blend
    Pokud se renderuje do více textur zároveň (multiple render targets), umožňuje nastavit blendovací funkci a blendovací rovnici zvlášť pro každou texturu.
  • GL_ARB_sample_shading
    Standardně pokud při multisamplingu více vzorků pokrývá jedno primitivum (čára, trojúhelník), pixel shader se spustí jen jednou a jeho výsledek se do každého takového vzorku přiřadí. Tato optimalizace může způsobovat aliasing, pokud barva vzorku závisí např. na koordinátech textury. Nově lze tuto optimalizaci potlačit tj. je možno zadat minimální počet unikátních vzorků. Také je možno v pixel shaderu zjistit, jaký vzorek je právě zpracováván včetně jeho přesné pozice v obraze. (možnosti tohoto rozšíření mohou být ohromující...)
  • GL_ARB_texture_cube_map_array
    Podpora pro pole cubemap textur v shaderu. (podobné jako pole 2D textur v DX10 a GL3)
  • GL_ARB_texture_gather
    Namísto bilineárního filtru je možno v shaderu získat čtveřici pixelů textury, které by byly k tomuto filtru potřeba, a to jen jedním voláním TEX instrukce. Z pixelů se vrací pouze první kanál (red) do 4D vektoru. Vhodné např. u custom filtrů a při shadow mappingu. (jiné názvy: fetch4, gather4)
  • GL_ARB_texture_query_lod
    Pomocí této nové funkce v Shading Language lze získat informace, které by použila texturovací jednotka pro výběr mipmapy. Výsledek pravděpodobně vrací texturovací jednotka přímo. Může se hodit pro efektivní určení úrovně level-of-detail u efektů, podle které by se určila např. náročnost osvětlovacího modelu.

Namísto Compute shaderu, který je např. v DX11, lze použít OpenCL, v jehož specifikaci je podrobně popsána interakce s OpenGL včetně sdílení bufferů a textur.

OpenGL nyní dosáhlo na úroveň Direct3D 10.1 a v některých ohledech ho i překonává. Na vývoji se podíleli jak výrobci hardwaru tj. NVIDIA, AMD, Intel, Apple a ARM, tak i výrobci software tj. Blizzard, TransGaming, CodeWeavers, a jiní. ARB poslední dobou vykazuje zvýšenou aktivitu. Za posledních 12 měsíců vydalo 3 verze OpenGL a ohromné množství nových funkcí a vylepšení API. Běžný smrtelník samozřejmě nemusí číst přímo specifikace (systém extenzí může být nepřehledný), nicméně může si počkat na oficiální dokumentaci.

Vzhledem k množství nových věcí v této aktualizaci OpenGL a mému omezenému času je možné, že jsem se při pročítání specifikací někde přehlédl. Připomínky vítány. Některé uvedené příklady použití jsou vlastní nápady.

Mimochodem, NVIDIA už vydala OpenGL 3.2 beta drivery.

Reference:

OpenGL fórum, oficiální oznámení
OpenGL Extension Registry
Příspěvek od uživatele Groovounet
Uživatel Jean-Francois Roy se zde podrobněji zabývá novinkama v GLSL 1.5
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Novinky / Zprávičky Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna