Nya renderingsmotorer för OpenGL och Vulkan har lagts till i GTK

Utvecklarna av GTK-biblioteket har meddelat att tvÄ nya renderingsmotorer - "ngl" och "vulkan" - Àr redo och anvÀnder grafik-API:er som OpenGL (GL 3.3+ och GLES 3.0+) samt Vulkan. De nya motorerna ingÄr i den experimentella utgÄvan av GTK 4.13.6. I den experimentella grenen av GTK anvÀnds motoren ngl som standard, men om betydande problem upptÀcks kommer den gamla renderingsmotorn "gl" att Äterinföras i nÀsta stabila version 4.14.

De nya motorerna positioneras som enhetliga och byggs frÄn en gemensam kodbas. KÀrnan i enheten Àr att API Vulkan anvÀnds som grund, ovanpÄ vilket ett separat abstraheringslager skapats för OpenGL som tar hÀnsyn till skillnaderna mellan OpenGL och Vulkan. Denna metod har möjliggjort att bÄda motorerna anvÀnder en gemensam infrastruktur för att hantera scenens graf (scene graph), transformationer, textur- och glyff-cache. Enheten har ocksÄ avsevÀrt förenklat underhÄllet av kodbasen för bÄda motorerna och att hÄlla dem aktuella och synkroniserade.

Till skillnad frÄn den gamla motorn "gl", dÀr en separat enkel shader anvÀndes för varje typ av renderingsnoder (rendernode) och periodisk omsortering av data genomfördes vid oförskÀmd rendering (offscreen), tillÀmpas i de nya motorerna en komplex shader (ubershader) som tolkar data frÄn bufferten istÀllet för oförskÀmd rendering. I nuvarande skepnad ligger den nya implementeringen fortfarande efter den gamla nÀr det gÀller optimeringsnivÄer, eftersom fokus i detta skede ligger pÄ att sÀkerstÀlla korrekt fungerande och enkel underhÄllning.

De nya funktionerna som saknas i den gamla motorn "gl":

  • KantutjĂ€mning - möjliggör bevarande av smĂ„ detaljer och ger en jĂ€mnare renderingskontur.
    Nya renderingsmotorer för OpenGL och Vulkan har lagts till i GTK
  • Skapande av godtyckliga gradienter, dĂ€r ett valfritt antal fĂ€rger och utjĂ€mning kan anvĂ€ndas (i motorn "gl" stöddes endast linjĂ€ra, radiella och koniska gradienter med 6 fĂ€rgstopp).
    Nya renderingsmotorer för OpenGL och Vulkan har lagts till i GTK
  • BrĂ„kdelsskalning (fractional scale), vilket möjliggör anvĂ€ndning av icke-heltaliga skalvĂ€rden, exempelvis vid anvĂ€ndning av 125% skalning för ett fönster pĂ„ 1200×800 kommer en buffer pĂ„ 1500×1000 att allokeras istĂ€llet för 2400×1600 som i den gamla motorn.
  • Stöd för DMA-BUF-teknologi för att anvĂ€nda flera GPU:er och utföra separata operationer pĂ„ en annan GPU.
  • MĂ„nga rendering-noder som hade problem med den gamla implementeringen hanteras korrekt.

De nya motorernas begrÀnsningar inkluderar bristen pÄ stöd för positionering med icke hela vÀrden (fraktionell position) och glshader-noder, som var starkt knutna till den gamla motorns sÀrdrag, och dÀr behovet försvann efter att stöd för mask-noder och genomskinliga texturer lagts till. Det nÀmns ocksÄ en möjlighet till problem med grafikdrivrutiner pÄ grund av förÀndringar i hur man arbetar med drivrutiner.

I framtiden kan det, baserat pÄ den nya enhetliga modellen, komma att skapas rendering-motorer som anvÀnder Metal i macOS och DirectX i Windows, men skapandet av sÄdana motorer försvÄras av anvÀndningen av andra sprÄk för shaders (i motorerna "ngl" och "vulkan" anvÀnds GLSL, sÄ för Metal och Direct mÄste shaders antingen dupliceras eller en mellanlager baserad pÄ SPIRV-Cross-verktyget anvÀndas).

Framtidsplanerna inkluderar att sÀkerstÀlla stöd för HDR och verktyg för korrekt fÀrghantering, stöd för path rendering pÄ GPU-sidan, möjlighet till glyph-rendering, rendering utanför huvudtrÄden och optimering av prestandan för gamla och svagare enheter. I nuvarande skick Àr prestandan hos "vulkan"-motorn nÀra prestandan hos den gamla "gl"-motorn. "ngl"-motorn ligger efter i prestanda jÀmfört med den gamla "gl"-motorn, men de nuvarande siffrorna rÀcker för rendering i 60 eller 144 FPS. Det antas att situationen kommer att förÀndras efter optimering.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster