Pas d’image aujourd’hui :-(

Je ne me souviens plus comment je suis tombé sur ce lien EFG’s Graphics Page , mais à partir de cette page j’ai découvert Amit’s Game Programming Information et de là à une mine de pages et liens et sources variées extrêmement utiles pour mon projet de programme de dessin. C’est comme un enfant qui entre dans un magasin de bonbons et… il peut en prendre autant qu’il veut. Alors je suis en mode “overload” ou surcharge si on veut. Les idées se bousculent, je prends des notes. Je repense des sections de mon programme et, aussi, j’ai décidé et complété la transition de byte[] vers int[]. En cours de modification, j’ai découvert plein de petits segments qui vont demander ajustements et améliorations.

C’est un autre petit pas en avant mais qui ne m’a pas permis de produire aucune nouvelle image.

* * *

I cannot remember how I came across this EFG’s Graphics Page link, but from this page I discovered Amit’s Game Programming Information page, a great repository of pages and links, and various sources extremely useful for my program project of drawing. It’s like a child entering a candy store and… he can take as much as he wants. So I’m in “overload” mode. The ideas are jostling, I take notes. I rethink sections of my program and, also, I decided and completed the transition from byte[] to int[]. In the process, I have discovered many small segments that will require adjustments and improvements.

This is another small step forward but that has not allowed me to produce any new image.

Hésitation

byte[] ou int[] ?

Je devrais expliquer un peu. Dans la mémoire de l’ordinateur, une image ce n’est qu’une longue file (et pas une grille) de nombres, chacun représentant une intensité de 0 à 255 pour chacun des quatre canaux (channels) alpha, rouge, vert, bleu. Ces quatre valeurs (bytes) peuvent être groupées en une seule (int), car 1 byte = 8 bits et un int = 32 bits ou 4 x 8 bits.

Paintual est construit en bytes alors que PaintualBrush est construit en int. J’ai fait des tests de performance pour savoir quel était le plus rapide : travailler en bytes ou en int ?

int est un rien plus rapide (4-6 millisecondes pour une image  de 957600 pixels). L’extraction des composants alpha, rouge, vert, et bleu est pris en compte dans le test. int est aussi un peu plus facile à travailler conceptuellement.

J’hésite à modifier Paintual à fond pour utiliser int parce qu’on dit “if it ain’t broken, don’t fix it” (inutile de réparer ce qui n’est pas brisé). Ça reste quand même un travail de quelques jours assez intensifs si je me fie à la dernière fois où j’ai modifié Paintual dans une même optique (et c’était pas une réussite, on s’en souviendra peut-être).

Entre temps, une image faite avec Photoshop pour ne pas vous laisser sur votre faim.

* * *

byte[] or int[]?

I should explain a little bit. In the computer memory, an image is only a long array (and not a grid) of numbers, each representing an intensity from 0 to 255 for each of the four alpha, red, green, blue channels. These four values (bytes) can be grouped into one int, because 1 byte = 8 bits and an int = 32 bits or 4 x 8 bits.

Paintual is built in bytes while PaintualBrush uses int. I did some performance tests to find out which is faster: working with bytes or int?

int is barely faster (4-6 milliseconds for an image of 957600 pixels). The extraction of the alpha, red, green and blue channels is being taken into account in the test. int is also conceptually a bit easier to work with.

I hesitate to modify Paintual thoroughly to use int because they say “if it is not broken, do not fix it.” It will require a few intensive days of work according to the last time I modified Paintual for a similar purpose (and it was not a success, if you remember).

Meanwhile, here is an image made with Photoshop.

2017-09-21 1200

 

PaintualBrush

PaintualBrush c’est l’outil de développement des pinceaux, crayons, etc. de Paintual.

Oui, l’outil existe. C’est une version mini de Paintual qui utilise les mêmes principes dans les grandes lignes: un outil de dessin (pinceau, crayon, etc), un gestionnaire d’opération (workflow) qui fait le lien entre chaque mouvement de souris ou de stylet et détermine quand l’outil de dessin execute une opération graphique, et une surface de dessin qui est reproduite à l’écran.

Ce qu’il y a de différent c’est le découpage de l’information des pixels. J’ai essayé quelque chose de différent, pensant que ça serait vraiment plus performant, mais je suis pas trop convaincu d’autant que certaines opérations de transparence sont un peu plus compliquées (et la transparence c’est bien important pour augmenter la richesse des textures).

Mais j’ai réalisé que des choses pourraient être améliorées dans Paintual, dès maintenant. Alors le tout constitue un beau petit pas en avant.

Pour l’instant les tests n’ont porté que sur la reproduction de lignes avec des images de pinceau déjà existantes dans Paintual. Les tests dans PaintualBrush consistent en quatre lignes verticales, chacune tracée avec le même outil de dessin et la même “image” (forme de pinceau si on veut). Pour les outils qui comporteront des paramètres, chaque ligne sera paramétrée différemment. C’est ce qui me permettra de tester des valeurs minimales et maximales, en conjonction ou non, avec ou sans cycles de variances, etc.

Ci-dessous, les trois première images de tests. On voit que les lignes ne sont pas pleines. C’est un signe de mauvaise gestion de la transparence dans PaintualBrush. À suivre.

* * *

PaintualBrush is the tool for developing brushes, pencils, etc. from Paintual.

Yes, the tool exists. It is a mini version of Paintual which uses the same working principles: a drawing tool (brush, pencil, etc.), an operation manager (workflow) that links each mouse or stylus move and determines when the drawing tool executes a graphic operation, and a drawing surface that is reproduced on the screen.

What is different is the segmentation of the pixel information. I tried something different, thinking that it would be really better, but I’m not too convinced as some transparency operations are a little more complicated (and transparency is very important to increase the richness of textures).

But I realized that things could be improved in Paintual, right now. So the whole thing is a nice little step forward.

For the moment, the tests have only been about the reproduction of lines with brush images already existing in Paintual. The tests in PaintualBrush consist of four vertical lines, each drawn with the same drawing tool and the same “image” (brush shape or tip if you want). For tools that have parameters, each line will be set differently. This will allow me to test minimum and maximum values, in conjunction or not, with or without cycles of variance, etc.

Below, the first three test images. We see that the lines are not full. This is a sign of poor transparency management in PaintualBrush. To be continued.

circle30dots3soft

Autre chose

En faisant quelques recherches, je suis tombé sur ces deux listes (la seconde étant déjà référencée par la première) : des applications de dessin sur plateformes variées.

* * *

By doing some research, I came across these two lists (the second one being already referenced by the first): drawing applications on various platforms.

https://github.com/REAS/sketchmachine/wiki/Weird-Drawing-Software

https://github.com/justanothersystem/tools/tree/master