Novaj bildmotoroj por OpenGL kaj Vulkan estis aldonitaj al GTK

La programistoj de la GTK-biblioteko anoncis la haveblecon de du novaj bildigaj motoroj - "ngl" kaj "vulkan", uzante la OpenGL (GL 3.3+ kaj GLES 3.0+) kaj Vulkan-grafikajn APIojn. Novaj motoroj estas inkluzivitaj en la eksperimenta eldono de GTK 4.13.6. En la eksperimenta branĉo GTK, la ngl-motoro nun estas uzata defaŭlte, sed se signifaj problemoj estas identigitaj en la sekva stabila branĉo 4.14, la malnova "gl" bildiga motoro estos resendita.

Novaj motoroj estas poziciigitaj kiel unuigitaj kaj kunvenitaj de ununura kodbazo. La esenco de la unuigo estas, ke la Vulkan API estas uzata kiel bazo, sur kiu oni kreis apartan abstraktan nivelon por OpenGL, konsiderante la diferencojn inter OpenGL kaj Vulkan. Ĉi tiu aliro ebligis uzi komunan infrastrukturon en ambaŭ motoroj por prilaborado de la scengrafeo, transformoj, kaŝmemoro teksturoj kaj glifoj. Unuiĝo ankaŭ signife simpligis la prizorgadon de la kodbazo de ambaŭ motoroj kaj retenante ilin ĝisdatigitaj kaj sinkronigitaj.

Male al la malnova gl-motoro, kiu uzis apartan simplan ombrilon por ĉiu speco de bildiga nodo kaj periode reordigis la datenojn dum eksterekrana bildigo, la novaj motoroj anstataŭe de eksterekrana bildigo uzas kompleksan ombrilon (ubershader) kiu interpretas la datenojn de la bufro. . En sia nuna formo, la nova efektivigo ankoraŭ postrestas malantaŭ la malnova koncerne la nivelon de optimumigoj, ĉar la ĉefa fokuso en la nuna stadio estas sur ĝusta funkciado kaj facileco de bontenado.

Novaj funkcioj, kiuj mankas en la malnova gl-motoro:

  • Kontura glatigo - permesas vin konservi bonajn detalojn kaj atingi pli glatajn konturojn.
    Novaj bildmotoroj por OpenGL kaj Vulkan estis aldonitaj al GTK
  • Formado de arbitraj gradientoj, kiuj povas uzi ajnan nombron da koloroj kaj kontraŭaliasing (en la gl-motoro, nur liniaj, radialaj kaj konusaj gradientoj kun 6 haltkoloroj estis subtenataj).
    Novaj bildmotoroj por OpenGL kaj Vulkan estis aldonitaj al GTK
  • Frakcia skalo, kiu ebligas al vi agordi ne-entjerajn skalvalorojn, ekzemple, kiam vi uzas skalon de 125% por fenestro de 1200x800, bufro de 1500x1000 estos asignita, kaj ne 2400x1600 kiel en la malnova motoro.
  • Subteno por DMA-BUF-teknologio por uzi plurajn GPU-ojn kaj malŝarĝi individuajn operaciojn al alia GPU.
  • Multaj bildigaj nodoj, kiuj havis problemojn en la malnova efektivigo, estas ĝuste prilaboritaj.

La limigoj de la novaj motoroj inkluzivas la mankon de subteno por poziciigado per ne-entjeraj valoroj (frakcia pozicio) kaj glshader-nodoj, kiuj estis forte ligitaj al la trajtoj de la malnova motoro, kaj kiuj ne plu estis necesaj post aldoni subtenon por nodoj kun maskoj (masko) kaj teksturoj kun travidebleco. Estas ankaŭ menciite, ke ekzistas ebleco de eblaj problemoj kun grafikaj ŝoforoj aperantaj pro ŝanĝoj en la metodo de laboro kun ŝoforoj.

Estonte, surbaze de la nova unuigita modelo, la kreado de bildmotoroj uzantaj Metalon en macOS kaj DirectX en Vindozo ne estas ekskludita, sed la kreado de tiaj motoroj estas komplikita pro la uzo de aliaj lingvoj por ombrantoj (la "ngl ” kaj “vulkanaj” motoroj uzas la GLSL-lingvon, do por Metalo kaj Rekta devos aŭ duplikadi ombrantojn aŭ uzi tavolon bazitan sur la ilaro SPIRV-Cross).

Estontaj planoj inkluzivas provizi HDR-subtenon kaj ilojn por ĝusta koloradministrado, subtenon por Path-bildigo ĉe la GPU-flanko, la kapablo bildigi glifojn, eksterfluan bildigon kaj agado-optimumigojn por pli malnovaj kaj malfortaj aparatoj. En ĝia nuna formo, la rendimento de la "vulkan" motoro estas proksima al la efikeco de la malnova "gl" motoro. La "ngl" motoro estas malsupera laŭ rendimento ol la malnova "gl" motoro, sed la disponebla rendimento sufiĉas por bildigo ĉe 60 aŭ 144 FPS. Oni atendas, ke la situacio ŝanĝiĝos post optimumigo.

fonto: opennet.ru

Aldoni komenton