Bonjour à tous,
- Nom : OpenGL Image Processing Library (GLIP-Lib)
- Version : 0.7 (en cours de développement vers 0.8)
- Langue : Anglais (mais je peux assurer de l'aide en Français)
- Description : Librairie simple pour construire des pipelines de traitement d'image sur GPU avec OpenGL (>2.0) et GLSL.
- Compatibilité : GNU/Linux (en cours de tests sur Windows, le code est générique et devrait s'adapter à toutes les plateformes disposant d'OpenGL et des extensions nécessaires).
- Nécessite : OpenGL (>2.0), GLSL, un GPU relativement récent (ex : 8800 GTX chez NVidia), CMake pour la compilation, Qt pour les interfaces des exemples.
- Site et Documentation en ligne : http://glip-lib.sourceforge.net/index.html
- Téléchargements : https://sourceforge.net/projects/glip-lib/files/ (préférez le dépôt Git pour le moment)
- Langages : C++/GLSL
- Sources : Disponibles sur Sourceforge : https://sourceforge.net/scm/?type=git&group_id=363201
Le but de cette API est de proposer un ensemble d'outils permettant de construire rapidement un pipeline de traitement de l'image sur architecture GPU, qui soit à la fois portable entre GPUs de différent constructeurs et différents systèmes d'exploitation. Les techniques mises en place relèvent du GPGPU en tirant parti des performances et des optimisations d'un GPU (en utilisant les primitives définies par OpenGL) et en vaforisant ainsi le débit de traitement des flux vidéos (notamment Full-HD). Je n'ai pas voulu forcer l'utilisation ni d'OpenCL, ni de CUDA pour rester au plus près de la gestion "graphique" d'un GPU et d'utiliser les souplesses de gestions proposées par OpenGL (filtering de textures, création automatique de mipmaps, opération de blending, etc.). Il sera cependant bientôt possible d'interfacer du code des ces deux APIs directement depuis un filtre de GLIP-Lib et donc de bénificier d'un évantail d'opérations encore plus large (FFT...).
L'API ne propose pour l'instant que quelques filtres et algorithmes usuels tels que Sobel, Histogrammes, Flou. Il est cependant extrêmement simple d'écrire de nouveaux filtres à partir des spécifications du langage GLSL. Vous pouvez aussi partager vos pipelines avec le projet, je pense créer une bibliothèques sur le site pour l'upload/download de ceux-ci.
Ces pipelines peuvent être à la fois décrit "en dur" dans le code mais aussi chargés depuis un fichier de script en suivant la documentation fournie sur le site. Il devient alors facile de prototyper un pipeline puisque la compilation des Shaders (les programmes de transformations) est effectuée juste avant l'utilisation de ceux-ci, par le driver afin d'assurer une compatibilité et un niveau d'optimisation au plus haut pour le matériel cible et ce processus est indépendant de la compilation du programme en C++.
Les futurs travaux prévus :
- Identification et test des extensions d'OpenGL nécessaires. <en cours>
- Test du mode de transfert rapide CPU/GPU avec des PBOs.
- Développement d'un logiciel graphique pour designer les pipelines.
- Ajout d'outils de diagnostique aux performances. <en cours>
Cordialement,
Partager