

GTK Scene Graph Kit ( GSK ) est l'API de rendu et de graphe de scène pour GTK introduite avec la version 3.90. GSK se situe entre les éléments de contrôle graphique (widgets) et le rendu.
Comme GDK , GSK fait partie de GTK et est sous licence GNU Lesser General Public License (LGPL).
Raisonnement
GSK fait partie de GTK. GSK est destiné à être utilisé par GTK lui-même et par les applications basées sur GTK qui souhaitent remplacer Clutter pour leur interface utilisateur. Les applications qui ont utilisé Clutter au lieu d'utiliser uniquement GTK sont par exemple GNOME Shell , GNOME Videos , GNOME Boxes et Cheese .
Toute application qui utilise les éléments de contrôle graphique de GTK (widgets), par opposition aux applications qui obtiennent une fenêtre GTK et se dessinent ensuite dessus, bénéficie de GSK.
Performance
Le dessin d'éléments de contrôle graphiques (widgets) sans graphe de scène conduit à afficher des éléments qui n'apparaissent pas à l'écran, des éléments qui n'ont pas besoin d'être affichés ; cela conduit donc à des pertes de performances et d'autonomie de la batterie évitables. Le graphe de scène est utilisé pour déterminer les surfaces cachées .
Simplicité
La façon dont les widgets étaient dessinés dans GTK (quand on n'utilisait pas Clutter) était qu'une fonction de dessin (faisant partie de GDK, d'où le nom (GIMP "Drawing")) dessinait tout. Il n'y avait aucun moyen de savoir ce qui venait d'être dessiné. Pour savoir où le pointeur de la souris se trouvait actuellement, la position actuelle devait être calculée. Avec GSK, il devrait être assez facile d'écrire des éléments de contrôle graphiques complexes (widgets) tout en suivant facilement la position du pointeur de la souris.
CSS
Il a été décidé pour GTK de passer à un modèle basé sur des feuilles de style en cascade (CSS) pour la façon dont les éléments de contrôle graphiques (widgets) sont stylisés (c'est-à-dire thématiques / skinnés ) et rendus. Dans CSS, les propriétés d'ombres, de bordures, de remplissage et de style ont une sémantique bien définie . Certaines de ces sémantiques sont difficiles à implémenter avec l'ancien modèle de dessin GTK.
GSK utilise graphène, une bibliothèque externe qui héberge une collection de types de géométrie — points, tailles, rectangles, vecteurs, quads, quaternions, matrices. graphène a été porté sur le système de construction Meson .
Pipeline de rendu GSK
GSK utilise une approche à double niveau :
- La couche inférieure est un simple arbre de rendu des opérations ; il peut être transformé en commandes de rendu appropriées avec des changements d'état minimes, de sorte qu'il est transformé en pipeline de rendu. L'arbre des opérations de rendu est représenté par des instances de GskRenderNode ; une instance de GskRenderer prend les nœuds de rendu et les soumet (après les avoir éventuellement réorganisés et transformés en une représentation plus appropriée) au système graphique sous-jacent.
- couche supérieure : un ensemble complexe de couches logiques ; il ajoute une API pratique de haut niveau pour les développeurs d'applications.
API de rendu
À partir de GTK 3.90, qui est le numéro de version de développement de ce qui deviendra GTK 4, GSK prend en charge le rendu à l'aide de ces back-ends :
Histoire
Désordre
Clutter a été rendu public le 22 juin 2006. La bibliothèque d'intégration « clutter-gtk » est disponible depuis le 29/11/2006.
Lors du 2e Desktop Summit en août 2011 à Berlin, on a beaucoup parlé de « GTK+ 4.0 et Clutter 2.0 ».
Idée d'introduire un graphe de scène dans GTK
En 2008, des développeurs comme Havoc Pennington envisageaient d'ajouter un canevas de scène à GTK, car des personnes extérieures à GTK utilisaient des éléments tels que Clutter, Pigment, HippoCanvas ou GooCanvas. Il a été proposé de faire des éléments de contrôle graphiques (widgets) un type d'objet dans un graphique de scène plus flexible.
GSK
Avant GSK, le dessin était effectué par GDK - gérant le rendu de base tel que les primitives de dessin, les graphiques raster (bitmaps), les curseurs , les polices , ainsi que les événements de fenêtre et la fonctionnalité glisser-déposer .
En juin 2006, Clutter, une bibliothèque de « toiles interactives » basée sur OpenGL, a été publiée. Clutter possède son propre graphe de scène, et les développeurs de GNOME ont préféré utiliser le graphe de scène de Clutter avec GTK, facilité par une bibliothèque appelée clutter-gtk. Clutter peut être intégré dans chaque application GNOME en utilisant la bibliothèque clutter-gtk. La bibliothèque clutter-gtk fournit un widget GTK GtkClutterEmbed qui peut être utilisé pour afficher un ClutterStage.
Certains ont réfléchi à la manière de fusionner Clutter et GTK d'une meilleure manière que la bibliothèque clutter-gtk.
En 2011, Firefox a introduit « Azure » et Joe Drew et Bas Schouten ont pris la peine de fournir quelques explications.
- Lors du GUADEC2013 à Brno, Emmanuele a partagé son idée sur la mise en œuvre d'un graphe de scène et d'un framework d'animation au sein de la plateforme GNOME (après avoir travaillé pendant les 6 dernières années sur Clutter).
- GTK Scene Graph Kit (GSK) est le prochain graphe de scène pour GTK en cours d'écriture par Emmanuele Bassi.
- Le 30 juillet 2014, Emanuelle a déclaré qu'il pensait qu'il ne devrait pas y avoir de Clutter 2.0 autonome.
Une présentation a eu lieu au Developer Experience Hackfest 2014 concernant un nouveau graphe de scène pour GTK destiné à être intégré dans GTK+ 3.16. Ensuite, GSK devait être prêt et entièrement intégré dans la version 3.20 de GTK+, qui devait être publiée en mars 2016. Cette version a été reportée à la version 3.22, puis finalement intégrée dans la version 3.90.
Le support OpenGL (ou OpenGL ES ) dans GDK facilite un contrôle légèrement meilleur du pipeline graphique ; OpenGL est bien adapté à la composition de données texturées mais totalement inadapté au dessin.
Les dernières informations sur le statut de GSK proviennent de GUADEC 2016.
Autres projets
- Les bibliothèques de la Fondation Enlightenment utilisent un graphe de scène depuis 2000, implémenté dans la bibliothèque Evas .
- Qt a été repensé et, à partir de la version 5, il intègre Qt Quick 2 avec un rendu basé sur des graphiques de scène.