Programmation Graphique - Synthèse d'Images : 2D CPU, 2D GLSL et OpenGL 3.2+ |
Pour information : les projets sont à rendre jeudi 22 mai à 7h00 au plus tard et par email. La soutenance se déroule en B103 le même jour à 12h00. Afin d'être inscrits, tous les étudiants ont l'obligation de se présenter aux soutenances même si leur projet n'est pas terminé. | |
Supports & liens | |
Site de la SDL - Simple DirectMedia Layer : Nous utiliserons la SDL-2 comme bibliothèque donnant accès à un contexte OpenGL 3.2 ou plus et aussi comme bibliothèque de gestion des évènements et des interactions utilisateur. Elle pourra, si besoin, être utilisée pour la gestion des threads, des fonts, au chargement de divers formats d'images ou de sons. Site d'OpenGL - Open Graphics Library : OpenGL sera utilisé en version CORE 3.2 et + (voire 3.3 et +). Nous utiliserons la documentation des Reference Pages d'OpenGL 3.3, au moins pour les premiers exemples donnés, nous fournissons les Projets/Makefiles pour un fonctionnement sous Linux (Makefile), Windows (Visual C++ 2010 express, DevC++ 5 ou Makefile sous cygwin/MingW32) et Mac OS X (Makefile). GL4Dummies : nous développons une bibliothèque permettant une gestion uniforme et facile des ressources OpenGL via la SDL2 (une ancienne version utilisant la SDL 1.2 existe mais ne sera plus maintenue par l'auteur). Actuellement, le source de cette bibliothèque est fourni, quand nécessaire, avec le source des exemples de cours. ForVC : contenu spécifique aux utilisateurs de Visual C++ 2010 Express, vous pouvez décompresser le dossier ForVC au même niveau que les exemples de cours afin d'avoir l'ensemble des dépendances nécessaires (includes et libs des libs SDL2 et GL). |
|
Exemples utilisés en cours | |
Ecran bleu - l'Init de la SDL2 avec OpenGL 3.2 : SIExemple01-1.0.tgz | |
Shaders statiques - Affichage d'une géométrie simple (un TRIANGLE_STRIP décrivant un rectangle) utilisant un VAO (Vertex Array Object) et un VBO (Vertex Buffer Object) : SIExemple02-1.0.tgz | |
Shaders dynamiques - avec la bibliothèque GL4D - transfert et traitement en vertex et fragment shader des coordonnées et des couleurs des sommets: SIExemple03-1.0.tgz | |
SIExemple03 + Chargement et utilisation d'une texture : SIExemple04-1.0.tgz | |
Codes vus en cours pour respectivement faire un simple flou, appliquer une convolution passée en argument ou un filtre Sobel : simple flou, convolution générique, Sobel | |
Implémentation du tracé de droite par l'algorithme de Bresenham'65 et comparaison avec un tracé de droite par division flottante : fichier tests_droite.c | |
Utilisation des primitives droite et cercle vues en cours et appliquées au dessin dans une texture OpenGL. Archive SIExemple08-1.0.tgz | |
Utilisation de la lib SDL2_Mixer avec SDL2 et OpenGL3.3+ pour visualiser un signal audio SIExemple09-1.0.tgz | |
SIExemple12-1.0.tgz : Voronoi Dansant en GPU (voir vidéo ci-contre). Aussi, première tentative de Voronoi en GPU faite en cours le 03 avril 2014 : SIExemple03-1.1.tgz | |
SIExemple13-1.0.tgz : Flou, Sobel, itérations de flous le tout en GPU et utilisant les FBO (Frame Buffer Objets) pour réaliser les itérations. Lors de l'exécution, appuyez sur n pour obtenir l'effet suivant et p pour l'effet précédent. | |
demoHelper-1.3.0.tgz
: Nouvelle version de la bibliothèque
avec, comme nouvelle fonctionnalité (depuis la 1.1.0 et la
1.2.0), la gestion automatique et dynamique de multiple
écrans en mode CPU, la copie depuis une surface SDL et le
placage avec possibilité de rotation (GPU) entre plusieurs
écrans. Aussi, ajout d'exemples de chargement d'une image
RGBA (et donc prise en compte du blending) depuis SDL et de
recopie multiple depuis la surface SDL vers l'écran en mode
CPU (pixel par pixel) et aussi en mode GPU. |
|
Utilisation de la libfftw-3 pour réaliser une transformée de fourier du signal audio et visualiser le spectre correspondant : SIExemple15-1.0.tgz | |
Animation de mobiles subissant la gravité et ricochant sur les bords de l'écran : SIExemple16-1.0.tgz | |
Exercices | |
Exercice 1 (pour le 20 février 2014) | |
FACILE : Paramétrez votre machine de développement pour compiler et exécuter les 3 premiers exemples de cours et plus particulièrement le dernier. Envoyez une preuve de réussite pour le troisième exemple (SIExemple03-1.0.tgz). | |
Exercice 2 (pour le 27 février 2014) | |
Ecrire la fonction de convolution vue en cours et réalisant un flou et envoyer le tgz projet correspondant (utilisez SIExemple05-1.1 comme base pour cet exercice). | |
Exercice 3 (pour ... vous) | |
En partant du code SIExemple10-0.1.tgz implémentez l'algorithme générant un diagramme de Voronoi discret par cercles grossissants (voir vidéo youtube ci-contre). | |
Exercice 4 (pour ... vous) | |
En partant du code SIExemple09-1.0.tgz et l'exercice précédent, faire un Voronoi dansant (voir vidéo youtube ci-contre). |
Exemples de Démos |
Farès Belhadj |