jeudi 12 janvier 2017

Pause

Je suis malade, et j'ai du Java sur le feu, raisons pour lesquelles je n'ai pas avancé d'un iota sur le port de mon application. J'espère m'y remettre bien vite.

lundi 2 janvier 2017

Bonne année à tous!

En ce début d'année, attendez-vous à de nouveaux posts sur mes expérimentations avec Ubuntu Touch. En particulier, j'ai enfin compris comment déployer des ressources dans le paquet Click, et, plus important, comment y accéder. Je vous explique tout ça bientôt.

En attendant, je vous souhaite à tous une excellente année 2017 !

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.

lundi 28 novembre 2016

Une fractale sur mon téléphone

L'obstination a fini par payer, et j'arrive maintenant à afficher un bout de l'ensemble de Mandelbrot sur mon Ubuntu Touch ! Sans plus attendre, la démonstration en photo :

Les écueils furent nombreux, mais j'ai fini par à peu près comprendre comment approcher le problème. En particulier, le port vers OpenGL ES fut un poil tordu, mais j'ai maintenant une base qui fonctionne.

En termes de performances, mon téléphone calcule une image en 500ms. À comparer avec ma machine de bureau qui fait tourner (presque) le même programme en 1ms, ce qui est plutôt raisonnable si l'on considère que la carte graphique à elle seule coûte 2 fois le prix du téléphone.

Il va donc falloir revoir les performances d'une part (réduction de la précision, rafraîchir l'image le moins possible), et les fonctionnalités d'autre part: afficher l'ensemble de Mandelbrot, c'est bien, mais s'assurer que l'on a pas de déformations, que l'on peut zoomer, et qu'il y a un joli dégradé de couleurs, c'est mieux.

Je compte donc d'abord tenter d'unifier autant que possible mes programmes OpenGL et OpenGL ES, puis de développer sur le bureau, ce qui est quand même rudement plus confortable, avant de revenir sur le téléphone, et peut-être un jour publier l'application...