Introduction à l'Informatique Graphique
Noise et depth buffer

Le but de cet exercice est l'utilisation de la fonction Noise de Ken Perlin et du depth buffer pour simuler la chutte et l'accumulation de neige sur des objets graphiques.

Récupérer le fichier noisy.tar.gz, le décompresser puis faire make test. Les fichiers ImprovedPerlinNoise.* implémentent la fonction Noise. Le programme noisy utilise deux fois cette fonction pour déplacer de manière pseudo aléatoire un point dans la fenêtre.
Transformer ce point en un flocon : modifier la manière dont Noise est utilisée pour faire en sorte que le point "tombe" du haut de la fenêtre vers le bas, de manière plus ou moins rapide et en déviant plus ou moins vers la gauche ou la droite. Faire disparaître définitivement le flocon lorsqu'il sort des limites de la fenêtres (par la gauche, la droite ou le bas).

Permettre la création à la souris d'autres flocons. Utiliser random pour faire varier la taille des flocons.

Ajouter un mode lié à une touche du clavier qui crée automatiquement un nombre pseudo-aléatoire de flocons dans la partie haute de la fenêtre pour simuler la chute de neige.

Compter les flocons qui sorte de la fenêtre vers le bas. Utiliser ce nombre pour créer un polygone destiné à représenter la couche de neige accumulée sur le sol. Utiliser à nouveau la fonction noise pour que le bord haut du polygone soit irrégulier.

Ajouter un ou plusieurs objet(s) graphique(s) dans la scène, e.g. une théière à l'aide de la fonction glutSolidTeapot. A l'aide de la fonction glDepthMask, désactiver l'écriture dans le depth buffer lors du dessin des flocons. Une fois toute la scène dessinée, utiliser glReadPixels pour récupérer la carte de profondeur. Utiliser cette carte pour connaître les endroits où les flocons peuvent s'agglomérer...