Motorên renderkirinê yên nû ji bo OpenGL û Vulkan li GTK hatine zêdekirin

Pêşdebirên pirtûkxaneya GTK hebûna du motorên nûvekirinê - "ngl" û "vulkan" ragihandin, ku API-yên grafîkî yên OpenGL (GL 3.3+ û GLES 3.0+) û Vulkan bikar tînin. Motorên nû di serbestberdana ceribandinê ya GTK 4.13.6 de cih digirin. Di şaxê ceribandina GTK-ê de, motora ngl naha ji hêla xwerû ve tê bikar anîn, lê ger pirsgirêkên girîng di şaxê domdar 4.14-ê ya paşîn de werin tespît kirin, dê motora vegotinê ya kevn "gl" were vegerandin.

Motorên nû wekî yekgirtî têne danîn û ji bingehek kodek yekane têne civandin. Esasê yekbûnê ev e ku Vulkan API wekî bingeh tê bikar anîn, li ser vê yekê ji bo OpenGL astek veqetandî ya veqetandî hatîye afirandin, ku cûdahiyên di navbera OpenGL û Vulkan de têne hesibandin. Vê nêzîkatiyê îmkan da ku di her du motoran de binesaziyek hevpar were bikar anîn ji bo hilberandina grafiya dîmenê, veguhertin, caching textures û glyphs. Yekbûn di heman demê de parastina bingeha kodê ya her du motoran jî bi girîngî hêsan kir û wan nûvekirin û hevdeng hişt.

Berevajî motora gl ya kevn, ku ji bo her cûre girêka renderê şaderek sade ya cihêreng bikar anî û di dema vegotina li derveyî ekranê de bi awayekî periyodîk daneyan ji nû ve veqetand, motorên nû li şûna renderkirina derveyî dîmenderek tevlihev (ubershader) bikar tînin ku daneyên ji tampon şîrove dike. . Di forma xweya heyî de, pêkanîna nû hîn jî di warê asta xweşbîniyê de ji ya kevin paşde dimîne, ji ber ku di qonaxa heyî de baldariya sereke li ser xebitandina rast û hêsankirina lênihêrînê ye.

Taybetmendiyên nû yên ku di motora gl ya kevn de winda ne:

  • Paqijkirina konturê - dihêle hûn hûrguliyên xweşik biparêzin û xêzên nermtir bi dest bixin.
    Motorên renderkirinê yên nû ji bo OpenGL û Vulkan li GTK hatine zêdekirin
  • Damezrandina gradientên keyfî, ku dikarin her hejmarek rengan bikar bînin û antî-aliasing bikar bînin (di motora gl de, tenê xêzên xêz, radial û konîkî yên bi 6 rengên rawestanê piştgirî kirin).
    Motorên renderkirinê yên nû ji bo OpenGL û Vulkan li GTK hatine zêdekirin
  • Pîvana fraksîyonî, ku dihêle hûn nirxên pîvana ne-hejmar bicîh bikin, mînakî, dema ku pîvanek 125% ji bo pencereyek 1200x800 bikar bînin, dê tamponek 1500x1000 were veqetandin, û ne 2400x1600 wekî motora kevn.
  • Piştgiriya teknolojiya DMA-BUF ji bo karanîna gelek GPU û barkirina karûbarên kesane li GPU-ya din.
  • Gelek girêkên rendering ên ku di pêkanîna kevn de pirsgirêk hebûn rast têne hilberandin.

Sînorên motorên nû nebûna piştgirîya ji bo pozîsyona ji hêla nirxên ne-hejmar (pozîsyona perçeyî) û girêkên glshader ve, ku bi giranî bi taybetmendiyên motora kevn ve girêdayî bûn, û yên ku piştî lê zêdekirina piştgirîyê êdî ne hewce bûn. girêkên bi maske (maske) û tevnên bi şefafî. Di heman demê de tê behs kirin ku îhtîmal heye ku pirsgirêkên muhtemel ên ajokarên grafîkê ji ber guheztina awayê xebata bi ajokeran re derkevin holê.

Di pêşerojê de, li ser bingeha modela nû ya yekbûyî, çêkirina motorên rendering ên ku Metal di macOS û DirectX-ê de di Windows-ê de bikar tînin, nayê derxistin, lê çêkirina motorên weha bi karanîna zimanên din ên ji bo shaderan re tevlihev e ("ngl " û motorên "vulkan" zimanê GLSL bikar tînin, ji ber vê yekê ji bo Metal û Direct dê pêdivî ye ku şaderan dubare bikin an qatek li ser bingeha amûra SPIRV-Cross bikar bînin).

Planên pêşerojê peydakirina piştgirî û amûrên HDR-ê ji bo rêveberiya rengîn a rast, piştgirî ji bo pêşkêşkirina rê li aliyê GPU, şiyana pêşkêşkirina glyphs, rendering-a-stream, û xweşbîniyên performansê ji bo cîhazên kevn û kêm-hêza. Di forma xwe ya niha de, performansa motora "vulkan" nêzîkê performansa motora kevn "gl" e. Motora "ngl" di performansê de ji motora kevn "gl" kêmtir e, lê performansa berdest ji bo danasîna 60 an 144 FPS bes e. Tê payîn ku piştî xweşbîniyê rewş biguhere.

Source: opennet.ru

Add a comment