OpenGL və Vulkan üçün yeni render mühərrikləri GTK-ya əlavə edildi

GTK kitabxanasının tərtibatçıları OpenGL (GL 3.3+ və GLES 3.0+) və Vulkan qrafika API-lərindən istifadə edərək iki yeni renderinq mühərrikinin - “ngl” və “vulkan”ın mövcudluğunu elan etdilər. Yeni mühərriklər GTK 4.13.6-nın eksperimental buraxılışına daxil edilmişdir. Eksperimental GTK filialında ngl mühərriki indi defolt olaraq istifadə olunur, lakin növbəti stabil filial 4.14-də əhəmiyyətli problemlər aşkar edilərsə, köhnə "gl" renderinq mühərriki geri qaytarılacaq.

Yeni mühərriklər vahid olaraq yerləşdirilir və vahid kod bazasından yığılır. Unifikasiyanın mahiyyəti ondan ibarətdir ki, əsas kimi Vulkan API istifadə olunur, bunun üzərinə OpenGL və Vulkan arasındakı fərqlər nəzərə alınmaqla OpenGL üçün ayrıca abstraksiya səviyyəsi yaradılıb. Bu yanaşma hər iki mühərrikdə səhnə qrafikinin, çevrilmələrin, keşləmə fakturalarının və qliflərin işlənməsi üçün ümumi infrastrukturdan istifadə etməyə imkan verdi. Unifikasiya həm də hər iki mühərrikin kod bazasının saxlanmasını və onların yenilənməsini və sinxronlaşdırılmasını əhəmiyyətli dərəcədə sadələşdirdi.

Hər bir render node növü üçün ayrıca sadə şeyderdən istifadə edən və ekrandan kənar göstərmə zamanı məlumatları vaxtaşırı çeşidləyən köhnə gl mühərrikindən fərqli olaraq, yeni mühərriklər ekrandan kənar render əvəzinə buferdən məlumatları şərh edən mürəkkəb şeyderdən (ubershader) istifadə edir. . Hazırkı formada yeni tətbiq optimallaşdırma səviyyəsinə görə hələ də köhnəsindən geri qalır, çünki hazırkı mərhələdə əsas diqqət düzgün işləməyə və texniki xidmətin asanlığına yönəlib.

Köhnə gl mühərrikində çatışmayan yeni xüsusiyyətlər:

  • Konturun hamarlanması - incə detalları qoruyub saxlamağa və daha hamar konturlara nail olmağa imkan verir.
    OpenGL və Vulkan üçün yeni render mühərrikləri GTK-ya əlavə edildi
  • İstənilən sayda rəng və anti-aliasing istifadə edə bilən ixtiyari gradientlərin formalaşması (gl mühərrikində yalnız 6 dayanma rəngi olan xətti, radial və konusvari gradientlər dəstəkləndi).
    OpenGL və Vulkan üçün yeni render mühərrikləri GTK-ya əlavə edildi
  • Tam olmayan miqyaslı dəyərləri təyin etməyə imkan verən fraksiya miqyası, məsələn, 125x1200 ölçülü bir pəncərə üçün 800% miqyasdan istifadə edərkən köhnə mühərrikdə olduğu kimi 1500x1000 deyil, 2400x1600 bufer ayrılacaq.
  • Çoxlu GPU-dan istifadə etmək və fərdi əməliyyatları başqa GPU-ya yükləmək üçün DMA-BUF texnologiyasına dəstək.
  • Köhnə tətbiqetmədə problemləri olan bir çox göstərmə qovşaqları düzgün işlənir.

Yeni mühərriklərin məhdudiyyətlərinə, köhnə mühərrikin xüsusiyyətləri ilə sıx bağlı olan və dəstək əlavə edildikdən sonra artıq lazım olmayan tam olmayan dəyərlər (kəsir mövqe) və glshader qovşaqları ilə yerləşdirmə dəstəyinin olmaması daxildir. maskalar (maska) və şəffaflıq ilə dokular ilə düyünlər. Həmçinin qeyd olunur ki, drayverlərlə iş metodunun dəyişməsi nəticəsində qrafik drayverlərlə bağlı mümkün problemlərin yaranması ehtimalı var.

Gələcəkdə, yeni vahid model əsasında, macOS-da Metal və Windows-da DirectX-dən istifadə edərək renderinq mühərriklərinin yaradılması istisna edilmir, lakin bu cür mühərriklərin yaradılması şeyderlər üçün digər dillərin istifadəsi ilə çətinləşir ("ngl" ” və “vulkan” mühərrikləri GLSL dilindən istifadə edir, ona görə də Metal və Direct üçün ya şeyderləri dublikat etməli, ya da SPIRV-Cross alət dəsti əsasında təbəqədən istifadə etməli olacaq).

Gələcək planlara HDR dəstəyi və düzgün rəng idarəçiliyi üçün alətlər təqdim etmək, GPU tərəfində Path rendering dəstəyi, qliflər göstərmək imkanı, yayımdan kənar göstərmə və köhnə və aşağı gücə malik cihazlar üçün performans optimallaşdırmaları daxildir. İndiki formada "vulkan" mühərrikinin performansı köhnə "gl" mühərrikinin göstəricilərinə yaxındır. "ngl" mühərriki köhnə "gl" mühərrikindən performans baxımından aşağıdır, lakin mövcud performans 60 və ya 144 FPS-də göstərmək üçün kifayətdir. Optimallaşdırmadan sonra vəziyyətin dəyişəcəyi gözlənilir.

Mənbə: opennet.ru

Добавить комментарий