jeudi 29 décembre 2016

Prêt à porter

Je suis à peu près satisfait de mon application de bureau, qui me permet de naviguer librement à travers la bonne vieille cardioïde (mais pas trop profond, hein, c'est encore du flottant partout). J'en ai profité pour mettre du noir quand la suite ne converge pas, ce qui est plus joli (et plus correct). Maintenant, je suis prêt à porter la chose correctement sur le téléphone. Stress...

mercredi 14 décembre 2016

C'était facile, finalement

Une fois trouvé le petit bug qui faisait foirer le lissage des couleurs, je me suis rendu compte que c'était finalement très simple à implémenter (et nettement moins simple à comprendre). Voici le résultat:

Laisse moi zoom zoom zang

Dans ta fractale, fractale, fractale!

Après le contrôle de la palette, j'ai rajouté la navigation via la souris pour le déplacement, et la molette pour le zoom. L'on peut enfin explorer la fractale à volonté. C'est toujours d'une rapidité surprenante à calculer, au point que tout semble trop facile: je me sens presque floué de ne pas avoir à attendre plusieurs minutes pour voir une belle image. Mais pouvoir juste regarder un peu à côté de l'image, ou approcher un détail, est tellement confortable.

Maintenant, j'ai une application qui se tient à peu près. Quelques améliorations seront cependant les bienvenues:

  • Le lissage des couleurs en passant par des logarithmes
  • Une amélioration de la palette, peut-être avec du noir pour le centre
  • Une amélioration de la précision

Je développe un peu le dernier point. Mon visualiseur utilise des flottants simple précision, qui sont ce que le GPU préfère. C'est super pour les graphismes en général, mais sur du calcul de fractales, cette précision créé très rapidement une limite dans le zoom, au delà duquel l'image se retrouve composée de blocs disgracieux. La solution la plus simple pour franchir cette limite consiste à passer en double précision, ce qui est trivial pour un CPU, mais nettement plus périlleux pour un GPU, où l'augmentation de précision est une fonctionnalité très récente qui est encore mal supportée par le logiciel et le matériel.

L'autre solution est d'utiliser des nombres décimaux à précision illimitée. Avec un CPU, le temps de calcul devient rapidement exécrable, tandis que l'utilisation mémoire explose. Avec un GPU, je ne sais même pas si c'est possible...

vendredi 9 décembre 2016

Partageons

C'est toujours mieux quand on partage, donc j'ai mis une version très basique de mon explorateur de l'ensemble de Mandelbrot, version ordinateur de bureau, sur Github. C'est par ici que ça se passe.

Notez que j'ai trouvé une fonction pour transformer du HSV en RGB, histoire de fournir une coloration continue. Wikipedia l'explique mieux que moi, mais l'idée est que la composante H (la teinte) correspond à une position sur un cercle, l'ensemble HSV étant un cylindre, par opposition au RGB qui est un cube, et que la faire varier permet donc de changer de teinte aussi rapidement que souhaité sans jamais avoir de "saut" peu esthétique dans les couleurs.