Paintual 0.0.13.0

L’effet “Flow” est un peu plus rapide, juste un peu. J’ai commencé à pousser l’exécution du code vers le GPU (accélération matérielle). Pour l’instant et encore pour un bon bout de temps, tout le code de “Flow” ne peut être facilement accéléré parce toutes les opérations ne sont pas parallélisables, c’est-à-dire exécutées en même temps, puisqu’il y a de nombreuses dépendances sur les résultats des opérations : telle couleur doit être calculée avant de procéder au calcul du vecteur de déplacement, etc. J’ai à repenser mon algorithme. Cependant, dans l’état actuel de la version 0.0.13.0 c’est quand même un peu plus rapide que la version précédente.

Plusieurs, peut-être trop ? d’options s’offrent à nous lorsque vient le temps de travailler avec le GPU ; chacune a ses qualités, ses limitations. J’ai opté pour une option “morte” de Microsoft : AMP (Accelerated Massive Parallelism) ; morte parce qu’elle ne semble plus être en développement actif. Mais pour ce dont j’ai besoin en ce moment c’est amplement suffisant (effectuer des centaines de calculs simples en parallèle). Il fallait cependant communiquer avec C++ (mon projet est en C#). Pas simple, mais pas si mal.

Ensuite, il a fallu corriger un fichier de Microsoft (amp.h) selon les instructions ici pour que ça fonctionne avec Visual Studio 2017.

Il existe quantité de pages web dédiées à C++ AMP, sans compter les vidéos : une simple recherche Google vous mettra sur la voie.

Pourquoi ai-je choisi cette option plutôt qu’une autre ? Simplement parce qu’elle était déjà disponible sur mon ordi, que j’avais en main un bout de code qui indiquait la marche à suivre avec AMP et que ça correspondait exactement à mon besoin immédiat. Finalement, AMP est censé rouler sur toutes les cartes graphiques (à tout le moins ça fonctionne avec NVIDIA Quadro K2200 et AMD Radeon Vega 8). Pour l’instant c’est aussi la simplicité (relative) d’utilisation qui prime bien davantage que la pleine prise en charge de la puissance de la carte graphique.

Plus tard, évidemment, je me tournerai vers une option plus standard mais je n’ai pas encore fixé mon choix. CUDA est exclu parce que cela restreint mon application à ne rouler que sur un ordi qui a une carte NVIDIA, alors que mon laptop et mon Microsoft Surface sont équipés différemment. Je prévois créer un contrôleur “touch base” sur Surface pour changer les paramètres de l’application en cours d’utilisation (couleurs, traits, effets, etc.) et un ou + ordis pour permettre à plus d’une personne de pouvoir travailler sur la même image en même temps. C’est encore très loin mais c’est dans les plans.

En attendant, on a la version 0.0.13.0 code source et la version installable sous Windows.

geographie nouvelle

Paintual 0.0.12.0

Flous et fluides, deux nouveau effets. “Flow” est loin d’être aussi fluide que ce que je voulais obtenir mais ça reste une belle réussite. Le code inclus dans Paintual n’a pour l’instant que peu à voir avec l’exemple que j’avais trouvé, non que l’exemple n’était pas bon mais je n’arrivais pas à cerner les échelles de valeurs entre force, vélocité et différence de luminance. J’ai donc reconstruit partiellement le code à partir de zéro et ai pris une tangente différente. Pour l’instant le code est encore très lent malgré le multithreading en place. Il est temps de passer à l’accélération via GPU, une toute autre aventure.

Le code et l’installable Windows.

Ci-dessous, petite galerie.

fuild dynamics 04fuild dynamics 05a test 2a testbug

* * *

Blur and Flow, two new effects. Flow is far from being as fluid as what I wanted but it’s still convincing. The code included in Paintual has now very little to do with the example I had found, not that the example was bad but I could not identify the scales of values between force velocity and luminance difference. So I built the code from scratch and took a different tangent. For now the code is still very slow despite the multithreading in place. It’s time to move to GPU acceleration, another adventure.

Above, a sample gallery.

Source code and Windows Installer.

Dynamique des fluides

Presque intéressant. Vidéo accélérée parce que, pour l’instant, le code est lent. À remarquer qu’on aperçoit un effet de grille ; plus la grille est fine, plus l’effet semble naturel même si pour l’instant la fluidité est linéaire.

* * *

Almost interesting. This video shows the evolution at 3x speed because the code is not optimized. There is a grid effect. The finer the grid, the more natural the overall effect looks even if for now fluid direction is just linear.

Paintual 0.0.11.0

Color Variance

Quoique mon contrôle de sélection de couleur soit incomplet (et il ne répond pas bien au stylet de la tablette graphique), il fonctionne suffisamment bien pour permettre d’ajouter de la couleur dans la vie (de l’application 🙂  ).

2018-08-17_22-59-03

Ainsi, qui veut bien essayer l’application pourra faire des petits dessins en couleurs comme je le montrais dans mon post précédent.

Le code version 0.0.11.0 sur GitHub et l’installable Windows.

* * *

Color Variance

Even though my color picker control is incomplete (and it does not behave that well with the stylus of the graphic tablet), it works well enough to add color to life (within the app 🙂 ). This feature is now available to anyone who wants to experiment with colors like I posted before.

Version 0.0.11.0 on GitHub and Windows installable.

Paintual – Couleur (encore)

Un odieux bogue qui m’empêche presque de dormir et rend l’application bancale. Donc, pas de release sur GitHub tout de suite, mais bientôt (avec une patch de code qui fait honte mais qui semble fonctionner).

En attendant :

bles ondulantscraquelures

* * *

An awful bug that almost prevents me from sleeping and makes the application quite unstable. So no release on GitHub right now, but soon (with a code patch of shame but which seems to work).

Above, two things created with Paintual.