OpenGL ve Vulkan için yeni render motorları GTK'ya eklendi

GTK kütüphanesinin geliştiricileri, OpenGL (GL 3.3+ ve GLES 3.0+) ve Vulkan grafik API'lerini kullanan iki yeni işleme motorunun - "ngl" ve "vulkan" kullanılabilirliğini duyurdu. GTK 4.13.6'nın deneysel sürümüne yeni motorlar dahil edildi. Deneysel GTK dalında artık varsayılan olarak ngl motoru kullanılıyor, ancak bir sonraki kararlı dal 4.14'te önemli sorunlar tespit edilirse eski "gl" işleme motoru geri döndürülecek.

Yeni motorlar birleşik olarak konumlandırılmış ve tek kod tabanından toplanmıştır. Birleşmenin özü, Vulkan API'sinin temel olarak kullanılması ve bunun üzerine OpenGL için OpenGL ve Vulkan arasındaki farklar dikkate alınarak ayrı bir soyutlama seviyesinin oluşturulmasıdır. Bu yaklaşım, sahne grafiğinin işlenmesi, dönüşümler, dokuların ve gliflerin önbelleğe alınması için her iki motorda da ortak bir altyapının kullanılmasını mümkün kıldı. Birleştirme aynı zamanda her iki motorun kod tabanının bakımını ve bunların güncel ve senkronize tutulmasını da önemli ölçüde basitleştirdi.

Her bir işleme düğümü türü için ayrı bir basit gölgelendirici kullanan ve ekran dışı işleme sırasında verileri periyodik olarak yeniden sıralayan eski gl motorundan farklı olarak, yeni motorlar, ekran dışı işleme yerine arabellekteki verileri yorumlayan karmaşık bir gölgelendirici (ubershader) kullanır . Mevcut haliyle, yeni uygulama, optimizasyon düzeyi açısından hala eskisinin gerisinde kalıyor, çünkü mevcut aşamadaki ana odak noktası, doğru çalışma ve bakım kolaylığıdır.

Eski gl motorunda eksik olan yeni özellikler:

  • Kontur yumuşatma - ince ayrıntıları korumanıza ve daha düzgün konturlar elde etmenize olanak tanır.
    OpenGL ve Vulkan için yeni render motorları GTK'ya eklendi
  • Herhangi bir sayıda renk ve kenar yumuşatma kullanabilen rastgele degradelerin oluşturulması (gl motorunda yalnızca 6 durak rengi olan doğrusal, radyal ve konik degradeler desteklenmiştir).
    OpenGL ve Vulkan için yeni render motorları GTK'ya eklendi
  • Tamsayı olmayan ölçek değerlerini ayarlamanıza olanak tanıyan kesirli ölçek; örneğin, 125x1200 pencere için %800'lik bir ölçek kullanıldığında, eski motorda olduğu gibi 1500x1000 değil, 2400x1600 boyutunda bir arabellek tahsis edilecektir.
  • Birden fazla GPU kullanmak ve bireysel işlemleri başka bir GPU'ya aktarmak için DMA-BUF teknolojisi desteği.
  • Eski uygulamada sorun yaşayan birçok işleme düğümü doğru şekilde işleniyor.

Yeni motorların sınırlamaları arasında, eski motorun özelliklerine büyük ölçüde bağlı olan ve destek eklendikten sonra artık gerekli olmayan, tamsayı olmayan değerlere (kesirli konum) ve glshader düğümlerine göre konumlandırma desteğinin olmaması yer alıyor. maskeli (maskeli) düğümler ve şeffaflıklı dokular. Sürücülerle çalışma yöntemindeki değişiklikler nedeniyle grafik sürücülerinde ortaya çıkabilecek olası sorunların da olabileceğinden bahsediliyor.

Gelecekte, yeni birleşik modele dayanarak, macOS'ta Metal ve Windows'ta DirectX kullanan işleme motorlarının oluşturulması hariç tutulmamaktadır, ancak bu tür motorların oluşturulması, gölgelendiriciler için diğer dillerin kullanılması nedeniyle karmaşık hale gelmektedir (“ngl” ” ve “vulkan” motorları GLSL dilini kullanır, bu nedenle Metal ve Direct için ya gölgelendiricileri çoğaltmak ya da SPIRV-Cross araç setini temel alan bir katman kullanmak zorunda kalacaklar).

Gelecek planları arasında doğru renk yönetimi için HDR desteği ve araçlarının sağlanması, GPU tarafında Yol oluşturma desteği, glif oluşturma yeteneği, yayın dışı oluşturma ve eski ve düşük güçlü cihazlar için performans optimizasyonları yer alıyor. Mevcut haliyle "vulkan" motorun performansı eski "gl" motorun performansına yakındır. "NGL" motorunun performansı eski "gl" motora göre daha düşüktür, ancak mevcut performans 60 veya 144 FPS'de görüntü oluşturmak için yeterlidir. Optimizasyon sonrasında durumun değişmesi bekleniyor.

Kaynak: opennet.ru

Yorum ekle