Bonjour,
Je vous propose un petit effet de distorsion sinusoïdale comme on pouvait en voir dans les jeux vidéo de mon enfance (exemple l'animation du fond dans le monde 2 de Thunder Force 3 sur Megadrive )
J'avais besoin d'un tel effet sur un jeu que je suis en train de développer.
L'exemple proposé est un exemple pour Delphi FMX pur (pas d'utilisation de shader). Çà tourne pas mal sur de petites images mais pour optimiser cela, il faudrait passer par des shaders
Le principe est simple : on stocke l'image originale dans un TBitmap et on dessine dans un autre TBitmap. En fonction de différents critères (amplitude en X, fréquence en X, amplitude en Y, fréquence en X, fréquence en Y et de vitesse), on va récupérer la couleur du pixel à des coordonnées calculées pour écrire dans le pixel (x,y) du TBitmap de sortie cette couleur.
Par exemple, si on souhaite une amplitude de 50 sur X, dans le TBitmap de sortie, on va forcer la couleur du pixel (x,y) à la couleur du pixel (x+50, y) du TBitmap d'origine. On utilise une fonction sinusoïdale pour affiner le rendu et aller progressivement de l'amplitude 0 à 50 puis de 50 à 0 et cela indéfiniment.
Le ZIP du projet est dispo ici : DistortionDemo.7z







Répondre avec citation
Partager