Motorë të rinj rendering për OpenGL dhe Vulkan janë shtuar në GTK

Zhvilluesit e bibliotekës GTK kanë njoftuar disponueshmërinë e dy motorëve të rinj të interpretimit - "ngl" dhe "vulkan", duke përdorur API-të grafike OpenGL (GL 3.3+ dhe GLES 3.0+) dhe Vulkan. Motorët e rinj përfshihen në lëshimin eksperimental të GTK 4.13.6. Në degën eksperimentale GTK, motori ngl tani përdoret si parazgjedhje, por nëse identifikohen probleme të rëndësishme në degën e ardhshme të qëndrueshme 4.14, motori i vjetër i interpretimit "gl" do të kthehet.

Motorët e rinj pozicionohen si të unifikuar dhe të montuar nga një bazë e vetme kodi. Thelbi i unifikimit është që API Vulkan përdoret si bazë, në krye të së cilës është krijuar një nivel i veçantë abstraksioni për OpenGL, duke marrë parasysh ndryshimet midis OpenGL dhe Vulkan. Kjo qasje bëri të mundur përdorimin e një infrastrukture të përbashkët në të dy motorët për përpunimin e grafikut të skenës, transformimeve, teksturave të cachimit dhe glifeve. Unifikimi gjithashtu thjeshtoi ndjeshëm mirëmbajtjen e bazës së kodit të të dy motorëve dhe mbajtjen e tyre të përditësuar dhe të sinkronizuar.

Ndryshe nga motori i vjetër gl, i cili përdorte një shader të veçantë të thjeshtë për çdo lloj nyje renderimi dhe i riorganizonte periodikisht të dhënat gjatë paraqitjes jashtë ekranit, motorët e rinj në vend të paraqitjes jashtë ekranit përdorin një shader kompleks (ubershader) që interpreton të dhënat nga buferi. . Në formën e tij aktuale, zbatimi i ri mbetet ende pas atij të vjetër për sa i përket nivelit të optimizimeve, pasi fokusi kryesor në fazën aktuale është në funksionimin korrekt dhe lehtësinë e mirëmbajtjes.

Karakteristikat e reja që mungojnë në motorin e vjetër gl:

  • Zbutja e konturit - ju lejon të ruani detaje të imta dhe të arrini konturet më të lëmuara.
    Motorë të rinj rendering për OpenGL dhe Vulkan janë shtuar në GTK
  • Formimi i gradienteve arbitrare, të cilat mund të përdorin çdo numër ngjyrash dhe anti-aliasing (në motorin gl, mbështeteshin vetëm gradientët linearë, radialë dhe konikë me 6 ngjyra ndalese).
    Motorë të rinj rendering për OpenGL dhe Vulkan janë shtuar në GTK
  • Shkalla thyesore, e cila ju lejon të vendosni vlera të shkallës jo të plotë, për shembull, kur përdorni një shkallë prej 125% për një dritare prej 1200x800, do të ndahet një tampon prej 1500x1000, dhe jo 2400x1600 si në motorin e vjetër.
  • Mbështetje për teknologjinë DMA-BUF për përdorimin e GPU-ve të shumta dhe shkarkimin e operacioneve individuale në një GPU tjetër.
  • Shumë nyje rendering që kishin probleme në zbatimin e vjetër përpunohen në mënyrë korrekte.

Kufizimet e motorëve të rinj përfshijnë mungesën e mbështetjes për pozicionimin nga vlerat jo të plota (pozicioni i pjesshëm) dhe nyjet glshader, të cilat ishin shumë të lidhura me tiparet e motorit të vjetër dhe që nuk ishin më të nevojshme pas shtimit të mbështetjes për nyjet me maska ​​(maskë) dhe tekstura me transparencë. Përmendet gjithashtu se ekziston mundësia e problemeve të mundshme me drejtuesit e grafikës që lindin për shkak të ndryshimeve në metodën e punës me drejtuesit.

Në të ardhmen, bazuar në modelin e ri të unifikuar, nuk përjashtohet krijimi i motorëve rendering duke përdorur Metal në macOS dhe DirectX në Windows, por krijimi i motorëve të tillë është i ndërlikuar nga përdorimi i gjuhëve të tjera për shaders ("ngl " dhe motorët "vulkan" përdorin gjuhën GLSL, kështu që për Metal dhe Direct do të duhet ose të kopjojnë shader ose të përdorin një shtresë të bazuar në paketën e veglave SPIRV-Cross).

Planet e ardhshme përfshijnë ofrimin e mbështetjes HDR dhe mjeteve për menaxhimin e saktë të ngjyrave, mbështetje për paraqitjen e rrugës në anën e GPU-së, aftësinë për të dhënë glyphs, paraqitjen jashtë transmetimit dhe optimizimet e performancës për pajisjet më të vjetra dhe me fuqi të ulët. Në formën e tij aktuale, performanca e motorit "vulkan" është afër performancës së motorit të vjetër "gl". Motori "ngl" është inferior në performancë ndaj motorit të vjetër "gl", por performanca e disponueshme është e mjaftueshme për paraqitje në 60 ose 144 FPS. Pritet që situata të ndryshojë pas optimizimit.

Burimi: opennet.ru

Shto një koment