Nuwe weergawe-enjins vir OpenGL en Vulkan is by GTK gevoeg

Die ontwikkelaars van die GTK-biblioteek het die beskikbaarheid van twee nuwe weergawe-enjins aangekondig - "ngl" en "vulkan", met behulp van die OpenGL (GL 3.3+ en GLES 3.0+) en Vulkan grafiese API's. Nuwe enjins is ingesluit in die eksperimentele vrystelling van GTK 4.13.6. In die eksperimentele GTK-tak word die ngl-enjin nou by verstek gebruik, maar as beduidende probleme in die volgende stabiele tak 4.14 geïdentifiseer word, sal die ou "gl"-weergawe-enjin teruggestuur word.

Nuwe enjins word as verenig geposisioneer en saamgestel vanaf 'n enkele kodebasis. Die essensie van die eenwording is dat die Vulkan API as basis gebruik word, waarop 'n aparte abstraksievlak vir OpenGL geskep is, met inagneming van die verskille tussen OpenGL en Vulkan. Hierdie benadering het dit moontlik gemaak om 'n gemeenskaplike infrastruktuur in beide enjins te gebruik vir die verwerking van die toneelgrafiek, transformasies, kasteksture en gliewe. Eenwording het ook die instandhouding van die kodebasis van beide enjins aansienlik vereenvoudig en hulle op datum en gesinchroniseer.

Anders as die ou gl-enjin, wat 'n aparte eenvoudige skakering vir elke tipe weergawe-nodus gebruik het en die data periodiek hersorteer het tydens afskermweergawe, gebruik die nuwe enjins in plaas van afskermweergawe 'n komplekse skakering (ubershader) wat die data vanaf die buffer interpreteer . In sy huidige vorm bly die nuwe implementering steeds agter die ou een in terme van die vlak van optimalisering, aangesien die hooffokus in die huidige stadium op korrekte werking en gemak van instandhouding is.

Nuwe kenmerke wat in die ou gl-enjin ontbreek:

  • Kontoer gladmaak - laat jou toe om fyn besonderhede te bewaar en gladder kontoere te verkry.
    Nuwe weergawe-enjins vir OpenGL en Vulkan is by GTK gevoeg
  • Vorming van arbitrêre gradiënte, wat enige aantal kleure en anti-aliasing kan gebruik (in die gl-enjin is slegs lineêre, radiale en koniese gradiënte met 6 stopkleure ondersteun).
    Nuwe weergawe-enjins vir OpenGL en Vulkan is by GTK gevoeg
  • Breukskaal, wat jou toelaat om nie-heelgetalskaalwaardes te stel, byvoorbeeld, wanneer 'n skaal van 125% vir 'n venster van 1200x800 gebruik word, sal 'n buffer van 1500x1000 toegeken word, en nie 2400x1600 soos in die ou enjin nie.
  • Ondersteuning vir DMA-BUF-tegnologie vir die gebruik van veelvuldige GPU's en die aflaai van individuele bewerkings na 'n ander GPU.
  • Baie leweringsnodusse wat probleme in die ou implementering gehad het, word korrek verwerk.

Die beperkings van die nuwe enjins sluit in die gebrek aan ondersteuning vir posisionering deur nie-heelgetalwaardes (fraksionele posisie) en glshader nodusse, wat sterk gekoppel was aan die kenmerke van die ou enjin, en wat nie meer nodig was nadat ondersteuning vir nodusse met maskers (masker) en teksture met deursigtigheid. Daar word ook genoem dat daar 'n moontlikheid is van moontlike probleme met grafiese drywers wat ontstaan ​​as gevolg van veranderinge in die metode om met drywers te werk.

In die toekoms, gebaseer op die nuwe verenigde model, word die skepping van weergawe-enjins met Metal in macOS en DirectX in Windows nie uitgesluit nie, maar die skepping van sulke enjins word bemoeilik deur die gebruik van ander tale vir shaders (die "ngl ” en “vulkan”-enjins gebruik die GLSL-taal, so vir Metal en Direct sal jy óf skadu's moet dupliseer óf 'n laag moet gebruik wat op die SPIRV-Cross-nutsmiddelstel gebaseer is).

Toekomstige planne sluit in die verskaffing van HDR-ondersteuning en gereedskap vir korrekte kleurbestuur, ondersteuning vir Pad-weergawe aan die GPU-kant, die vermoë om glifies weer te gee, buitestroom-weergawe en werkverrigtingoptimalisering vir ouer en laekragtoestelle. In sy huidige vorm is die werkverrigting van die "vulkan"-enjin na aan die werkverrigting van die ou "gl"-enjin. Die "ngl"-enjin is minderwaardig in werkverrigting as die ou "gl"-enjin, maar die beskikbare werkverrigting is voldoende vir lewering teen 60 of 144 FPS. Daar word verwag dat die situasie na optimalisering sal verander.

Bron: opennet.ru

Voeg 'n opmerking