Les effets ou moteurs de brosse sont des programmes écrits en langage OpenGL Shading Language.  Le programme est découpé en sections.

La section @params contient tous les paramètres définit par le développeurs, modifiables à l'exécution

La section @options permet de définir les options de texture des layers

La section @functions permet de coder toutes les fonctions appelables dans le corps de la fonction main du programme

La section @main contient le code la fonction main


En dehors de la sections principale (@main) les autres sections sont optionnelles. Vous pouvez placer les sections dans n'importe quel ordre. Une section commence au mot clé de la section et s'arrête au début d'une autre section ou à la fin du code s'il s'agit de la dernière section.

Le codage

Les instructions écrites dans les sections @functions et @main ne sont pas interprétées par l'éditeur. Elle sont fournies en l'état au compilateur intégré à la carte graphique de votre poste de travail. Ces instructions doivent être codées en utilisant le langage GLSL (OpenGL Shading Language version #330). Pour plus d'information reportez vous à la spécification du langage GLSL et aux nombreux sites fournissant des informations sur ce langage ou proposant des exemples et tutoriels.

La section @params

Cette section contient les paramètres spécifiques au programme. Les paramètres insérés dans cette section sont modifiables à l'exécution du programme.


Dans le cas des effets, les paramètres sont affichés dans le dialogue de paramétrage de l'effet.


Dans le cas des moteurs de brosse, les paramètres sont affichés dans le panneau des paramètres de brosse dans la catégorie Paramètres du moteur.

Types de paramètres

L'éditeur de code propose un assistant d'insertion pour chaque type de paramètre.

Type float

Les types float sont affichés  par un curseur et par une boite de saisie de nombre.


Déclaration :

float <varName> = <default value> "<description>" min = <min> max = <max> increment = <increment>;


<varName> : nom de la variable telle qu'utilisée dans le shader

<default value> : valeur par défaut de la variable

<description> : texte descriptif tel affiché dans le réglage des paramètres de l'effet ou de la brosse

<min> : valeur minimale, par défault 0.0

<max> :valeur maximale, par défaut 1.0

<increment> : valeur d'incrément du curseur de réglage, par défaut 0.01

Type booléen

Les type booléens sont affichés par une case à cocher.


Déclaration :


bool <varName> = <default value> "<description>";


<varName> : nom de la variable telle qu'utilisée dans le shader

<default value> : valeur par défaut de la variable true ou false

<description> : texte descriptif tel affiché dans le réglage des paramètres de l'effet ou de la brosse

Type énumération

Les types énumération sont affichés par une boite liste.


Déclaration :


enum <varName> = <default value> "<description>" enum values =

  <value 1> "<value 1 description>"

  <value 2> "<value 2 description>"

  ...

  <value n> "<value n description>";


<varName> : nom de la variable telle qu'utilisée dans le shader

<default value> : valeur par défaut de la variable

<description> : texte descriptif tel affiché dans le réglage des paramètres de l'effet ou de la brosse

<value> "<description>" : liste des valeurs d'énumération, la valeur utilisable dans le shader et la description de la valeur est telle qu'elle apparaît dans la boite liste.


Type couleur

Les types couleur sont affichés avec un champ de saisie de la couleur et un bouton de dialogue de choix de la couleur.


Déclaration :


color <varName> = rgb(<red>, <green>, <blue>[, <alpha>]) "<description>";


<varName> : nom de la variable telle qu'utilisée dans le shader

<description> : texte descriptif tel affiché dans le réglage des paramètres de l'effet ou de la brosse

<red>, <green>, <blue>, <alpha> : composantes RGB rouge, vert bleu de la couleur de 0 à 255, noir = rgb(0, 0, 0) et blanc = rgb(255, 255, 255), la composante alpha définit la transparence de la couleur de 0 à 255 et est optionelle (par défaut 255, couleur opaque)

Type texture

Les types texture sont des variables OpenGL texture2D. Le chemin du fichier image servant de texture est paramétré dans le programme mais n'est pas modifiable à l'exécution.


Déclaration :


texture <texture_name> "<file path>" wraps = <wrap mode s>  wrapt = <wrap mode t> min filter = <min filter> mag filter = <mag filter>;


<texture name> : nom de la variable telle qu'utilisée dans le shader

<file path> : chemin du fichier image associé à la texture. Le chemin peut contenir des variables de substitution

$DocumentsPath$ : chemin des documents utilisateurs (ex: sous Windows le répertoire Documents)

$ImagesPath$ : chemin du répertoire des images

$InstallationPath$ : chemin du répertoire d'installation de YoupiPaint

<wrap mode s>, <wrap mode t> : paramètre du wrap S et T d'OpenGL. L'assistant fournit la liste des valeurs possibles.

<min filter> : paramètre du filtre de minification OpenGL. L'assistant fournit la liste des valeurs possibles.

<mag filter> : paramètre du filtre de magnification OpenGL. L'assistant fournit la liste des valeurs possibles.


lors de la compilation, YoupiPaint vérifie l'existence du fichier image et donne un avertissement si le fichier n'existe pas.

La section @options

Cette section contient les options d'exécution, tels que le paramétrage des options de texture des calques.

la section @functions

Cette section contient le code des fonctions appelables dans la section @main.

La section @main

Cette section contient le code principal du programme.