Az OpenGL és a Vulkan új renderelőmotorjai kerültek a GTK-ba

A GTK könyvtár fejlesztői bejelentették, hogy két új renderelő motor – az „ngl” és a „vulkan” – elérhetővé válik az OpenGL (GL 3.3+ és GLES 3.0+) és a Vulkan grafikus API-k használatával. Új motorok szerepelnek a GTK 4.13.6 kísérleti kiadásában. A kísérleti GTK ágban alapértelmezés szerint az ngl motort használják, de ha a következő stabil 4.14-es ágban jelentős problémák merülnek fel, akkor a régi "gl" renderelő motor kerül visszaadásra.

Az új motorok egységesen helyezkednek el, és egyetlen kódbázisból állnak össze. Az egységesítés lényege, hogy a Vulkan API-t veszik alapul, amelyre az OpenGL-hez külön absztrakciós szintet hoztak létre, figyelembe véve az OpenGL és a Vulkan közötti különbségeket. Ez a megközelítés lehetővé tette egy közös infrastruktúra használatát mindkét motorban a jelenetgráfok, átalakítások, gyorsítótárazási textúrák és karakterjelek feldolgozásához. Az egységesítés emellett jelentősen leegyszerűsítette mindkét motor kódbázisának karbantartását, naprakészen tartását és szinkronizálását.

Ellentétben a régi gl motorral, amely külön egyszerű árnyékolót használt minden egyes renderelési csomóponthoz, és időről időre átválogatta az adatokat a képernyőn kívüli renderelés során, az új motorok a képernyőn kívüli renderelés helyett egy összetett shadert (ubershader) használnak, amely értelmezi a pufferből származó adatokat. . Az új megvalósítás jelenlegi formájában még mindig elmarad a régitől az optimalizációk szintjét tekintve, hiszen jelen szakaszban a fő hangsúly a helyes működésen és a könnyű karbantartáson van.

Új funkciók, amelyek hiányoznak a régi gl motorból:

  • Kontúrsimítás – lehetővé teszi a finom részletek megőrzését és simább kontúrok elérését.
    Az OpenGL és a Vulkan új renderelőmotorjai kerültek a GTK-ba
  • Tetszőleges színátmenetek kialakítása, amelyek tetszőleges számú színt és élsimítást használhatnak (a gl motorban csak lineáris, radiális és kúpos gradiensek támogatottak 6 stop színnel).
    Az OpenGL és a Vulkan új renderelőmotorjai kerültek a GTK-ba
  • Tört skála, amely lehetővé teszi nem egész skálaértékek beállítását, például ha 125% skálát használ egy 1200x800-as ablakhoz, akkor 1500x1000 puffer kerül kiosztásra, nem pedig 2400x1600, mint a régi motorban.
  • A DMA-BUF technológia támogatása több GPU használatához és az egyes műveletek másik GPU-ra való átrakásához.
  • Sok olyan leképezési csomópont, amelyeknek problémái voltak a régi megvalósításban, megfelelően dolgoznak fel.

Az új motorok korlátai közé tartozik a nem egész értékekkel történő pozicionálás támogatásának hiánya (tört pozíció) és a glshader csomópontok, amelyek erősen kötődtek a régi motor jellemzőihez, és amelyekre a támogatás hozzáadása után már nem volt szükség. csomópontok maszkokkal (maszk) és textúrák átlátszósággal. Azt is megemlítik, hogy a grafikus illesztőprogramokkal kapcsolatos problémák előfordulhatnak az illesztőprogramokkal való munkamódszer változásai miatt.

A jövőben, az új egységes modell alapján, nem kizárt, hogy a MacOS-ben Metalt és a Windowsban a DirectX-et használó renderelőmotorokat hozzon létre, de az ilyen motorok létrehozását megnehezíti más nyelvek használata a shaderekhez (az „ngl ” és a „vulkan” motorok a GLSL nyelvet használják, így a Metal és a Direct esetében vagy meg kell másolni a shadereket, vagy a SPIRV-Cross eszközkészleten alapuló réteget kell használniuk.

A jövőbeli tervek között szerepel a HDR-támogatás és a helyes színkezeléshez szükséges eszközök, a GPU-oldalon a Path rendering támogatása, a karakterjelek renderelésének képessége, az off-stream renderelés, valamint a teljesítményoptimalizálás a régebbi és alacsony fogyasztású eszközökhöz. Jelenlegi formájában a "vulkán" motor teljesítménye közel áll a régi "gl" motor teljesítményéhez. Az "ngl" motor teljesítménye gyengébb, mint a régi "gl" motor, de a rendelkezésre álló teljesítmény elegendő a 60 vagy 144 FPS-es megjelenítéshez. Az optimalizálás után várhatóan változni fog a helyzet.

Forrás: opennet.ru

Hozzászólás