GTK 中新增了新的 OpenGL 和 Vulkan 渲染引擎

GTK 庫的開發人員宣布推出兩種新的渲染引擎 -“ngl”和“vulkan”,它們使用 OpenGL(GL 3.3+ 和 GLES 3.0+)和 Vulkan 圖形 API。新引擎包含在 GTK 4.13.6 的實驗版本中。在實驗性 GTK 分支中,現在預設使用 ngl 引擎,但如果在下一個穩定分支 4.14 中發現重大問題,則將傳回舊的「gl」渲染引擎。

新引擎被統一定位並由單一程式碼庫組裝而成。統一的本質是,以Vulkan API為基礎,在其之上為OpenGL創建了一個單獨的抽象層次,同時考慮到OpenGL和Vulkan之間的差異。這種方法使得在兩個引擎中使用通用基礎設施來處理場景圖、轉換、快取紋理和字形成為可能。統一也顯著簡化了兩個引擎程式碼庫的維護,並使它們保持最新和同步。

與舊的gl 引擎不同,舊的gl 引擎為每種類型的渲染節點使用單獨的簡單著色器,並在離屏渲染期間定期重新排序數據,而新引擎不使用離屏渲染,而是使用複雜的著色器(ubershader) 來解釋緩衝區中的資料。就目前的形式而言,新實施在優化水平方面仍然落後於舊實施,因為現階段的主要重點是正確操作和易於維護。

舊版 gl 引擎中缺少的新功能:

  • 輪廓平滑 - 讓您保留精細細節並實現更平滑的輪廓。
    GTK 中新增了新的 OpenGL 和 Vulkan 渲染引擎
  • 形成任意漸變,可以使用任意數量的顏色和抗鋸齒(在 gl 引擎中,僅支援具有 6 個停止顏色的線性、徑向和圓錐形漸變)。
    GTK 中新增了新的 OpenGL 和 Vulkan 渲染引擎
  • 小數比例,允許您設定非整數比例值,例如,當對 125x1200 的視窗使用 800% 的比例時,將分配 1500x1000 的緩衝區,而不​​是像舊引擎中那樣分配 2400x1600。
  • 支援 DMA-BUF 技術,以使用多個 GPU 並將個別操作卸載到另一個 GPU。
  • 許多在舊實作中存在問題的渲染節點都得到了正確處理。

新引擎的限制包括缺乏對非整數值(小數位置)和 glshader 節點定位的支持,這些與舊引擎的功能緊密相關,在添加對帶有遮罩(mask)的節點和帶有透明度的紋理。也提到,由於使用驅動程式的方法發生變化,圖形驅動程式可能會出現問題。

未來,基於新的統一模型,不排除在 macOS 中使用 Metal 和在 Windows 中使用 DirectX 創建渲染引擎,但由於著色器使用其他語言(“ngl”),因此此類引擎的創建會變得複雜。 ”和「vulkan」引擎使用GLSL 語言,因此對於Metal 和Direct 必須複製著色器或使用基於SPIRV-Cross 工具包的層)。

未來的計劃包括提供 HDR 支援和正確色彩管理的工具、對 GPU 端路徑渲染的支援、渲染字形的能力、流外渲染以及針對舊設備和低功耗設備的效能最佳化。在目前的形式下,「vulkan」引擎的性能接近舊型「gl」引擎的性能。 「ngl」引擎的性能不如舊的「gl」引擎,但可用的性能足以以 60 或 144 FPS 進行渲染。預計優化後情況會有所改變。

來源: opennet.ru

添加評論