Enjin rendering baharu untuk OpenGL dan Vulkan telah ditambahkan pada GTK

Pembangun perpustakaan GTK telah mengumumkan ketersediaan dua enjin pemaparan baharu - "ngl" dan "vulkan", menggunakan OpenGL (GL 3.3+ dan GLES 3.0+) dan API grafik Vulkan. Enjin baharu disertakan dalam keluaran percubaan GTK 4.13.6. Dalam cawangan GTK percubaan, enjin ngl kini digunakan secara lalai, tetapi jika masalah ketara dikenal pasti dalam cawangan stabil seterusnya 4.14, enjin pemaparan "gl" lama akan dikembalikan.

Enjin baharu diletakkan sebagai bersatu dan dipasang daripada satu pangkalan kod. Intipati penyatuan ialah API Vulkan digunakan sebagai asas, di atasnya tahap abstraksi yang berasingan telah dibuat untuk OpenGL, dengan mengambil kira perbezaan antara OpenGL dan Vulkan. Pendekatan ini memungkinkan untuk menggunakan infrastruktur biasa dalam kedua-dua enjin untuk memproses graf pemandangan, transformasi, tekstur caching dan glif. Penyatuan juga memudahkan penyelenggaraan asas kod kedua-dua enjin dan memastikannya dikemas kini dan disegerakkan.

Tidak seperti enjin gl lama, yang menggunakan shader ringkas yang berasingan untuk setiap jenis nod pemaparan dan mengisih semula data secara berkala semasa pemaparan luar skrin, enjin baharu dan bukannya pemaparan luar skrin menggunakan shader kompleks (ubershader) yang mentafsir data daripada penimbal . Dalam bentuk semasa, pelaksanaan baharu masih ketinggalan berbanding yang lama dari segi tahap pengoptimuman, memandangkan fokus utama pada peringkat semasa adalah pada operasi yang betul dan kemudahan penyelenggaraan.

Ciri baharu yang tiada dalam enjin gl lama:

  • Penghalusan kontur - membolehkan anda mengekalkan butiran halus dan mencapai kontur yang lebih licin.
    Enjin rendering baharu untuk OpenGL dan Vulkan telah ditambahkan pada GTK
  • Pembentukan kecerunan arbitrari, yang boleh menggunakan sebarang bilangan warna dan anti-aliasing (dalam enjin gl, hanya kecerunan linear, jejari dan kon dengan 6 warna hentian disokong).
    Enjin rendering baharu untuk OpenGL dan Vulkan telah ditambahkan pada GTK
  • Skala pecahan, yang membolehkan anda menetapkan nilai skala bukan integer, contohnya, apabila menggunakan skala 125% untuk tetingkap 1200x800, penimbal 1500x1000 akan diperuntukkan, dan bukan 2400x1600 seperti dalam enjin lama.
  • Sokongan untuk teknologi DMA-BUF untuk menggunakan berbilang GPU dan memunggah operasi individu ke GPU lain.
  • Banyak nod pemaparan yang mengalami masalah dalam pelaksanaan lama diproses dengan betul.

Keterbatasan enjin baharu termasuk kekurangan sokongan untuk kedudukan oleh nilai bukan integer (kedudukan pecahan) dan nod glshader, yang sangat terikat dengan ciri enjin lama, dan yang tidak lagi diperlukan selepas menambah sokongan untuk nod dengan topeng (topeng) dan tekstur dengan ketelusan. Ia juga disebut bahawa terdapat kemungkinan masalah yang mungkin berlaku dengan pemacu grafik yang timbul akibat perubahan dalam kaedah bekerja dengan pemandu.

Pada masa hadapan, berdasarkan model bersatu baharu, penciptaan enjin rendering menggunakan Metal dalam macOS dan DirectX dalam Windows tidak dikecualikan, tetapi penciptaan enjin sedemikian rumit dengan penggunaan bahasa lain untuk shader ("ngl Enjin ” dan β€œvulkan” menggunakan bahasa GLSL, jadi untuk Metal dan Direct perlu sama ada menduplikasi shader atau menggunakan lapisan berdasarkan kit alat SPIRV-Cross).

Pelan masa hadapan termasuk menyediakan sokongan HDR dan alatan untuk pengurusan warna yang betul, sokongan untuk pemaparan Path pada bahagian GPU, keupayaan untuk memaparkan glif, pemaparan luar strim dan pengoptimuman prestasi untuk peranti yang lebih lama dan berkuasa rendah. Dalam bentuk semasa, prestasi enjin "vulkan" adalah hampir dengan prestasi enjin "gl" lama. Enjin "ngl" adalah lebih rendah dari segi prestasi berbanding enjin "gl" lama, tetapi prestasi yang tersedia adalah mencukupi untuk dipaparkan pada 60 atau 144 FPS. Dijangka keadaan akan berubah selepas pengoptimuman.

Sumber: opennet.ru

Tambah komen