Bonjour,
J'essaie de faire un effet de flou de vitesse, qui va vers l'image, pour mettre dans un jeu. J'ai un algo qui fonctionne mais que je trouve un peu longuet :
On donne en entrée l'image, le centre C du flou et la force de l'effet . J'utilise deux images, une copie de l'originale pour lire les pixels, et l'image originale qui est modifiée. Puis l'algo est :
(en fait je cherche pour tout pixel le pixel qui aurait servi de référence si le filtre était déjà appliqué)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Pour chacune des parties de l'image (en haut à gauche du centre, en haut à droite, en bas à gauche et en bas à droite) faire pour chacun des pixels p1 de cette partie faire soit p2 = p1 + dist(p1, C) * force / 100 calculer la moyenne m des pixels de p1 à p2 résultat(p1) = m fin-faire fin-faire
Le calcul de la moyenne des pixels est faite avec l'algo de Bresenham. Voici un exemple de résultat
Mon problème est que l'algo est un peu trop lent. Sur une image de 640 * 480 avec une force de 3, je ne suis pas descendu au dessous de 100 millisecondes. Ce qui est un peu beaucoup pour un jeu à 60 images secondes (une image toutes les 160 millisecondes ).
Je cherche donc un algo plus efficace. Par exemple dans Burnout 3 il y a un effet de ce genre, et un bon framerate.
Toutes les idées sont les bienvenues.
Pour les détails du test, c'est du C++, option de compil O3 et exécuté sur un processeur à 1,3 Ghz, 256 Mo de RAM.
Partager