Úgy tűnik ismét eljön az a korszak (egy időre?), amikor a "legyen egységes szabvány" helyett mindenki egyedi, a saját igényeinek megfelelő grafikus szabványt akarja népszerűvé és/vagy kötelezővé tenni. Erre már volt korábban példa a Microsoft-tól, de most úgy látszik az Apple is belépett a táborba, hiszen iOS-n OpenGL ES 3.1 támogatásnak egyelőre nincs nyoma. Hasonló funkcionalitás kihasználásához a saját megoldását a Metal-t kell használnunk (természetesen ennek más okai is vannak).
Most vegyük sorra a főbb, recens grafikus API-kat:
- OpenGL 4.x
- OpenGL ES 2.0
- OpenGL ES 3.0
- OpenGL ES 3.1
- WebGL
- GLNext (Vulkan)
- D3D9
- D3D11
- D3D12
- Metal
- Mantle
- Mantle 2
Első ránézésre soknak tűnik próbáljuk meg nagyjából csoportosítani a nyelv "stílusa" alapján
- Klasszikus OpenGL: OpenGL 4.x, ES x.x, WebGL
- Mantle stílus: Mantle 1, Vulkan
- D3D stílus: D3D9, D3D11 - bár nevükben hasonlók szintaxisuk csak távolról emlékeztet egymásra
- Egyéb: Metal, Mantle 2, D3D12
Ezenkívül még fontos kiemelni, hogy ezek közül mik a low-level API-k: Vulkan (Khronos), D3D12 (Microsoft), Metal (Apple), Mantle (AMD). Látható, hogy e terület lényegesebb szereplői már rendelkeznek low-level API-val. Nvidia-nak OpenGL 4.5-höz van low-level "kiegészítése" a command list AZDO.
Elég sokszínű a felhozatal... gyakorlati oldalról megközelítve mondhatni kezelhetetlen mennyiség. Így elérkezettnek láttam az időt, hogy létrehozzak egy absztrakt renderelő API-t, ami valahol félúton van ezek és egy grafikai engine között. Vagyis eléggé magas szintű ahhoz, hogy már ne legyenek framebufferek, draw callok viszont még ne legyenek materialok, megvilágítási modellek, egyedi renderpassok stb. Ez jelenleg a Metal-t, a Vulkan-t, a D3D11-t és az OpenGL-t fedi le.
És most lássuk mit is tudott a Vulkan akkor amikor a GDC ill. Khronos demót készítettük.
Sajnos erről egyelőre nem írhatok semmit...
Csak annyit ami publikus: az AMD Mantle átirata a Vulkan - közben az AMD már készíti a Mantle 2-t - és hogy low-level az API, de nagyon. Annyira, hogy ha már földrajzi terminusokat használunk (Mantle, Vulkan) én inkább plutónnak hívnám az API-t - vö. vulkanizmus: felszín feletti, plutonizmus: felszín alatti magmás (avagy láva) jelenségek.
Itt pedig a kép alját érdemes figyelni:
@VulkanAPI demo showcased at @intel booth #GDC2015 #GFXBench pic.twitter.com/avztC9pfFa
— Kishonti Ltd. (@KishontiI) March 6, 2015