GTK Adds New Engraving Engines for OpenGL and Vulkan

The developers of the library GTK have announced their readiness to introduce two new reinforcing engines, “NGL” and “VULKAN,” which utilize the graphic API Opengl (GL 3.3+ and Gles 3.0+) and Vulkan. These new engines are included in the experimental release of GTK 4.13.6. While the NGL engine is currently being used by default in the experimental branch of GTK, the old “GL” drawing engine will be reverted back if significant issues arise in the next stable branch 4.14.

The new engines are presented as unified and constructed from a single code base. This unification is achieved by using the Vulkan API as a foundation, upon which a separate level of abstraction is created for OpenGL, taking into account the differences between the two. This approach allows for the utilization of the shared infrastructure of processing Count of the stage (Scene Graph), transformations, caching of textures and glyphs. The unification also simplifies the support and maintenance of both engines, ensuring they remain up-to-date and synchronized.

Unlike the old GL engine, which utilized a separate simple shader for each type of rendering and periodically rendered data during sunset rendering, the new engines employ a complex shader (ubershader) that interprets data from the buffer instead of sunbeam rendering. Currently, the new implementation still falls behind the old optimization level since the main focus at this stage is on ensuring the correctness of work and simplicity of escort.

The new engines provide several opportunities that were absent in the old “GL” engine:

  • Smoothing out the contours: This feature allows for the preservation of small parts and the achievement of more even contours. (See example image)
  • Formation of arbitrary gradients: The new engines support any number of colors and smoothing in gradients, whereas the “GL” engine only supported linear, radial, and conical gradients with 6 stops of stopping. (See
/Reports, release notes, official announcements.