Ang mga bagong rendering engine para sa OpenGL at Vulkan ay naidagdag sa GTK

Inanunsyo ng mga developer ng GTK library ang pagkakaroon ng dalawang bagong rendering engine—"ngl" at "vulkan"—na gumagamit ng OpenGL (GL 3.3+ at GLES 3.0+) at Vulkan graphics API. Ang mga bagong makina ay kasama sa pang-eksperimentong paglabas ng GTK 4.13.6. Sa pang-eksperimentong sangay ng GTK, ang ngl rendering engine ay ginagamit na ngayon bilang default, ngunit kung matukoy ang mahahalagang isyu, ang mas lumang "gl" na rendering engine ay ibabalik sa susunod na stable na release, 4.14.

Ang mga bagong makina ay nakaposisyon bilang pinag-isa at binuo mula sa iisang codebase. Ang pagsasama-samang ito ay batay sa Vulkan API, kung saan ang isang hiwalay na abstraction layer para sa OpenGL ay nilikha, na isinasaalang-alang ang mga pagkakaiba sa pagitan ng OpenGL at Vulkan. Ang diskarte na ito ay nagbigay-daan sa parehong engine na gumamit ng isang karaniwang imprastraktura para sa pagproseso ng scene graph, mga pagbabago, texture caching, at glyph caching. Ang pag-iisang ito ay makabuluhang pinasimple ang pagpapanatili ng mga codebase ng parehong engine, na pinapanatili ang mga ito na napapanahon at naka-synchronize.

Hindi tulad ng lumang "gl" engine, na gumamit ng hiwalay na simpleng shader para sa bawat uri ng rendernode at pana-panahong muling inayos ang data sa panahon ng offscreen na pag-render, pinapalitan ng mga bagong engine ang offscreen na pag-render ng isang kumplikadong shader (ubershader) na nagbibigay-kahulugan sa data mula sa isang buffer. Sa kasalukuyan nitong anyo, ang bagong pagpapatupad ay nahuhuli pa rin sa luma sa mga tuntunin ng mga pag-optimize, dahil ang pangunahing pokus sa yugtong ito ay lumilipat mula sa tamang operasyon at kadalian ng pagpapanatili.

Mga bagong feature na nawawala sa lumang "gl" engine:

  • Nagbibigay-daan sa iyo ang mga makinis na contour na mapanatili ang mga magagandang detalye at makamit ang mas makinis na mga contour.
    Ang mga bagong rendering engine para sa OpenGL at Vulkan ay naidagdag sa GTK
  • Bumuo ng mga custom na gradient na maaaring gumamit ng anumang bilang ng mga kulay at anti-aliasing (sa gl engine, mga linear, radial, at conical gradient lang na may 6 na color stop ang suportado).
    Ang mga bagong rendering engine para sa OpenGL at Vulkan ay naidagdag sa GTK
  • Fractional scaling, na nagbibigay-daan sa iyong magtakda ng mga non-integer na halaga ng scale, halimbawa, kapag gumagamit ng 125% na sukat para sa isang 1200x800 na window, isang 1500x1000 buffer ang ilalaan, at hindi 2400x1600 tulad ng sa lumang makina.
  • Suporta para sa teknolohiya ng DMA-BUF para sa paggamit ng maraming GPU at pag-offload ng mga indibidwal na operasyon sa isa pang GPU.
  • Maraming mga rendering node na may problema sa lumang pagpapatupad ay pinangangasiwaan na ngayon nang tama.

Kabilang sa mga limitasyon ng mga bagong engine ang kakulangan ng suporta para sa fractional positioning at mga glshader node, na lubos na nakadepende sa mga feature ng lumang engine at hindi na kailangan pagkatapos ng pagdaragdag ng suporta para sa mga mask node at mga texture na may transparency. Ang potensyal para sa mga potensyal na isyu sa mga driver ng graphics dahil sa pagbabago sa paghawak ng driver ay binanggit din.

Sa hinaharap, hindi ibinubukod ang paglikha ng mga rendering engine gamit ang Metal sa bagong pinag-isang modelo. macOS at DirectX sa Windows, ngunit ang paglikha ng mga naturang engine ay kumplikado sa pamamagitan ng paggamit ng ibang mga wika para sa mga shader (ang mga "ngl" at "vulkan" na engine ay gumagamit ng wikang GLSL, kaya para sa Metal at Direct kailangan mong i-duplicate ang mga shader o gumamit ng isang layer batay sa SPIRV-Cross toolset).

Kasama sa mga plano sa hinaharap ang suporta sa HDR at wastong pamamahala ng kulay, pag-render ng path na batay sa GPU, pag-render ng glyph, pag-render sa labas ng main-thread, at mga pag-optimize ng performance para sa mga mas luma at mas mababa ang powered na device. Sa kasalukuyan, ang pagganap ng Vulkan engine ay malapit sa pagganap ng mas lumang GL engine. Ang NGL engine ay nahuhuli sa mas lumang GL engine sa pagganap, ngunit ang kasalukuyang pagganap nito ay sapat para sa pag-render sa 60 o 144 FPS. Inaasahang bubuti ito pagkatapos ng pag-optimize.

Pinagmulan: opennet.ru

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster