GTK kitabxana tərtibatçıları OpenGL (GL 3.3+ və GLES 3.0+) və Vulkan qrafik API-lərindən istifadə edən iki yeni render mühərrikinin — "ngl" və "vulkan" — mövcudluğunu elan etdilər. Yeni mühərriklər eksperimental GTK 4.13.6 buraxılışına daxil edilib. Eksperimental GTK filialında ngl render mühərriki artıq standart olaraq istifadə olunur, lakin əhəmiyyətli problemlər aşkar edilərsə, köhnə "gl" render mühərriki növbəti sabit buraxılışa, 4.14-ə qaytarılacaq.
Yeni mühərriklər vahid kod bazasından qurulub və vahid kod bazasından qurulub. Bu birləşmə Vulkan API-yə əsaslanır və bunun üzərində OpenGL və Vulkan arasındakı fərqləri nəzərə alaraq OpenGL üçün ayrıca abstraksiya təbəqəsi yaradılıb. Bu yanaşma hər iki mühərrikə səhnə qrafiklərinin işlənməsi, transformasiyalar, teksturaların keşlənməsi və qliflərin keşlənməsi üçün ortaq infrastrukturdan istifadə etməyə imkan verib. Bu birləşmə həmçinin hər iki mühərrikin kod bazalarının saxlanılmasını əhəmiyyətli dərəcədə asanlaşdırıb, onları yeniləyib və sinxronlaşdırıb.
Hər bir rendernode növü üçün ayrıca sadə bir şader istifadə edən və ekrandan kənar göstərmə zamanı məlumatları vaxtaşırı yenidən sıralayan köhnə "gl" mühərrikindən fərqli olaraq, yeni mühərriklər ekrandan kənar göstərməni buferdən məlumatları şərh edən mürəkkəb bir şader (ubershader) ilə əvəz edir. Hazırkı formada yeni tətbiq optimallaşdırma baxımından hələ də köhnəsindən geri qalır, çünki bu mərhələdə əsas diqqət düzgün işləmədən və texniki xidmətin asanlığından yayınmaqdır.
Köhnə "gl" mühərrikində olmayan yeni xüsusiyyətlər:
- Konturların hamarlanması incə detalları qorumağa və daha hamar konturlar əldə etməyə imkan verir.

- İstənilən sayda rəng və anti-aliasing istifadə edə bilən xüsusi qradiyentlər yaradın (gl mühərrikində yalnız 6 rəng nöqtəsi olan xətti, radial və konik qradiyentlər dəstəklənirdi).

- Kəsrli miqyaslama, tam ədəd olmayan miqyas dəyərlərini təyin etməyə imkan verir, məsələn, 1200x800 pəncərə üçün 125% miqyas istifadə edərkən, köhnə mühərrikdəki kimi 2400x1600 deyil, 1500x1000 bufer ayrılacaq.
- Birdən çox GPU istifadə etmək və fərdi əməliyyatları başqa bir GPU-ya yükləmək üçün DMA-BUF texnologiyasına dəstək.
- Köhnə tətbiqdə problemli olan bir çox render qovşaqları indi düzgün şəkildə idarə olunur.
Yeni mühərriklərin məhdudiyyətlərinə kəsr yerləşdirmə və glshader qovşaqları üçün dəstəyin olmaması daxildir. Bu qovşaqlar köhnə mühərrikin xüsusiyyətlərindən çox asılı idi və şəffaflığa malik maska qovşaqları və teksturalar üçün dəstək əlavə edildikdən sonra artıq lazım deyildi. Sürücü idarəetməsindəki dəyişiklik səbəbindən qrafik drayverlərlə bağlı potensial problemlərin olması da qeyd olunur.
Gələcəkdə yeni vahid modeldə Metal istifadə edərək render mühərriklərinin yaradılması istisna edilmir. macOS və DirectX-də Windows, lakin bu cür mühərriklərin yaradılması şaderlər üçün digər dillərin istifadəsi ilə çətinləşir ("ngl" və "vulkan" mühərrikləri GLSL dilindən istifadə edir, buna görə də Metal və Direct üçün ya şaderləri kopyalamalı, ya da SPIRV-Cross alətlər dəstinə əsaslanan bir təbəqədən istifadə etməli olacaqsınız).
Gələcək planlara HDR dəstəyi və düzgün rəng idarəetməsi, GPU əsaslı yol göstərilməsi, qlif göstərilməsi, əsas mövzudan kənar göstərilməsi və köhnə və daha aşağı güclü cihazlar üçün performans optimallaşdırmaları daxildir. Hazırda Vulkan mühərrikinin performansı köhnə GL mühərrikinin performansına yaxındır. NGL mühərriki performans baxımından köhnə GL mühərrikindən geri qalır, lakin hazırkı performansı 60 və ya 144 FPS-də göstərilməsi üçün kifayətdir. Optimallaşdırmadan sonra bunun yaxşılaşacağı gözlənilir.
Mənbə: opennet.ru

