Principes de base des shaders de Pixel Bender

Flash Player 10 et les versions ultérieures, Adobe AIR 1.5 et les versions ultérieures

Adobe Pixel Bender est un langage de programmation qui permet de créer ou de manipuler un contenu d’image. Par le biais de Pixel Bender, vous créez un noyau, également appelé un shader. Le shader définit une fonction unique exécutée séparément sur chacun des pixels d’une image. Le résultat de chaque appel à la fonction est la couleur de sortie aux coordonnées de ce pixel dans l’image. Vous pouvez spécifier des valeurs de paramètre et images d’entrée pour personnaliser l’opération. Si un shader est exécuté une seule fois, les valeurs de paramètres et d’entrée sont des constantes. Les seuls éléments qui varient sont les coordonnées du pixel dont la couleur est le résultat de l’appel de la fonction.

Dans la mesure du possible, la fonction shader est appelée pour plusieurs coordonnées de pixel de sortie en parallèle. Les performances du shader sont ainsi optimisées et le traitement s’avère souvent particulièrement efficace.

ActionScript permet de créer facilement trois types d’effets par le biais d’un shader :

  • remplissage d’un dessin

  • mode de fondu

  • filtre

Il est également possible d’exécuter un shader en mode autonome. En mode autonome, vous accédez directement au résultat d’un shader au lieu de prédéfinir l’usage prévu. Le résultat correspond à des données d’image, des données binaires ou des données numériques. Il n’est pas nécessaire que les données soient des données d’image. Vous pouvez ainsi affecter à un shader un jeu de données en entrée. Le shader traite les données et vous accédez au résultat qu’il renvoie.

Pixel Bender est pris en charge depuis Flash Player version 10 et Adobe AIR version 1.5. Les fusions, filtres et remplissages Pixel Bender ne sont pas pris en charge en cas de rendu par processeur graphique. Sur un périphérique mobile, les shaders Pixel Bender sont exécutés en cas de rendu par unité centrale. Les performances ne sont toutefois pas à la hauteur de celles d’un poste de travail. De nombreux programmes de shader ne s’exécutent qu’à quelques images par seconde.

Concepts importants et terminologie

La liste de référence suivante contient des termes importants relatifs à la création et à l’utilisation de shaders de Pixel Bender :

Noyau
Pour Pixel Bender, un noyau est équivalent à un shader. Par le biais de Pixel Bender, votre code définit un noyau, qui définit une fonction unique exécutée séparément sur chacun des pixels d’une image.

Pseudo-code binaire Pixel Bender
Lorsqu’un noyau Pixel Bender est compilé, il est transformé en pseudo-code binaire Pixel Bender. L’accès au pseudo-code binaire et son exécution se produisent lors de l’exécution.

Langage Pixel Bender
Langage de programmation utilisé pour créer un noyau Pixel Bender.

Pixel Bender Toolkit
Application utilisée pour créer un fichier de pseudo-code binaire Pixel Bender à partir du code source Pixel Bender. Elle vous permet d’écrire, de tester et de compiler un code source Pixel Bender.

Shader
Dans le cadre de ce document, un shader est un jeu de fonctionnalités écrites dans le langage Pixel Bender. Le code d’un shader crée un effet visuel ou effectue un calcul. Dans les deux cas, le shader renvoie un jeu de données (il s’agit en règle générale des pixels d’une image). Le shader exécute la même opération sur chaque point de données, à l’exception des coordonnées du pixel de sortie. Le shader n’est pas écrit en ActionScript. Il est écrit dans le langage Pixel Bender et compilé en pseudo-code binaire Pixel Bender. Il peut être intégré à un fichier SWF lors de la compilation ou chargé en tant que fichier externe lors de l’exécution. Dans les deux cas, pour y accéder dans ActionScript, il est nécessaire de créer un objet Shader et de le lier au pseudo-code binaire du shader.

Entrée du shader
Entrée complexe, généralement composée de données d’image bitmap, fournie à un shader qui l’utilise dans ses calculs. Pour chaque variable d’entrée définie dans un shader, une valeur unique (une image unique ou un jeu de données binaires) est utilisée pour l’exécution de bout en bout du shader.

Paramètre de shader
Valeur unique (ou jeu de valeurs limité) fournie à un shader, qui l’utilise dans ses calculs. Chaque valeur de paramètre est définie pour une exécution de shader unique et la même valeur est utilisée de bout en bout lors de l’exécution du shader.

Utilisation des exemples de code

Il peut s’avérer utile de tester les exemples de code fournis. Cette opération nécessite d’exécuter le code et d’afficher les résultats dans le fichier SWF créé. Tous les exemples créent un contenu par le biais de l’API de dessin qui utilise l’effet de shader ou est modifiée par ce dernier.

La plupart des exemples de code se composent de deux parties. La première partie correspond au code source Pixel Bender associé au shader utilisé dans l’exemple. Vous devez commencer par utiliser Pixel Bender Toolkit pour compiler le code source dans un fichier de pseudo-code binaire Pixel Bender. Procédez comme suit pour créer le fichier de pseudo-code binaire Pixel Bender :

  1. Ouvrez Adobe Pixel Bender Toolkit. Le cas échéant, dans le menu Build (Développement), choisissez « Turn on Flash Player warnings and errors » (Activer les avertissements et erreurs Flash Player).

  2. Copiez le code Pixel Bender et collez-le dans le panneau de l’éditeur de code de Pixel Bender Toolkit.

  3. Dans le menu File (Fichier), choisissez « Export kernel filter for Flash Player » (Exporter le filtre de noyau associé à Flash Player).

  4. Enregistrez le fichier de pseudo-code binaire Pixel Bender dans le même répertoire que le document Flash. Le nom du fichier doit être identique à celui stipulé dans la description de l’exemple.

La partie ActionScript de chaque exemple est écrite en tant que fichier de classe. Pour tester l’exemple dans Flash Professional :

  1. Créez un document Flash vide et enregistrez-le sur votre ordinateur.

  2. Créez un nouveau fichier ActionScript et enregistrez-le dans le même répertoire que le document Flash. Le nom du fichier doit correspondre au nom de la classe du code. Par exemple, si le code définit une classe MyApplication, enregistrez le fichier ActionScript sous le nom MyApplication.as.

  3. Copiez le code dans le fichier ActionScript et enregistrez le fichier.

  4. Dans le document Flash, cliquez sur une partie vide de la scène ou de l’espace de travail pour activer l’Inspecteur des propriétés du document.

  5. Dans l’Inspecteur des propriétés, dans le champ Classe du document, saisissez le nom de la classe ActionScript que vous avez copiée du texte.

  6. Exécutez le programme en sélectionnant Contrôle > Tester l’animation.

    Les résultats de l’exemple s’affichent dans la fenêtre d’aperçu.

Ces techniques de test des exemples de code font l’objet d’une description détaillée dans Utilisation des exemples de code ActionScript .