• Aucun résultat trouvé

En introduisant le lecteur Flash 9, Adobe s’était beaucoup investi dans l’amélioration des performances du lecteur. Le premier point à avoir été optimisé fut la vitesse d’exécution du code. Ceci fut majoritairement dû à l’introduction de la machine virtuelle 2 et du principe de traduction dynamique (Just-In-Time Compiler). Par la suite, Adobe a également souhaité améliorer les performances du moteur de rendu du lecteur. À cette fi n, la version 9.0.115 introduit un support des processeurs multi-cœurs en intégrant un procédé de rendu vectoriel multi-processus léger (multi-thread). Grâce à cette amélioration, le lecteur Flash alloue à chaque processeur une partie du rendu.

Dans le cas d’un processeur double cœurs, le premier processeur se charge de rendre la partie supérieure du lecteur, le second s’occupe de la partie inférieure (voir Figure 2.6).

Figure 2.6 Division des zones de rendu par processeur.

Plus le nombre de processeur est élevé, plus le nombre de zones découpées est important.

Processeur 1

En termes de rendu, on observe une amélioration d’environ 20 à 30 % entre un processeur simple cœur et un processeur double cœurs. Lors de l’utilisation de fi ltres et d’un processeur double cœurs, on peut remarquer une augmentation des performances d’environ 50 %, et de 90 % sur un processeur quadri-cœurs.

Parmi les autres améliorations apportées par le lecteur Flash 9, nous retiendrons en particulier l’intégration du codec H.264, la gestion du plein écran et le décodage audio AAC. L’intégration du format H.264 sera abordée au Chapitre 20, Son et Vidéo. Intéressons nous à présent à la notion d’accélération matérielle, souvent mal considérée.

Accélération matérielle

Avant d’aller plus loin, il convient de faire un point sur le concept d’accélération matérielle. Lorsque de lourds calculs occupent votre processeur, celui-ci est en mesure d’allouer une partie du traitement à un autre proces- seur présent sur la machine. La carte graphique s’avère être la cible idéale pour soulager le processeur. C’est pour cette raison que nous employons souvent le terme d’accélération GPU (Graphics Processing Unit). Le support de l’accélération matérielle fut introduit pour la première fois au sein du lecteur Flash 9.0.115. Peut-être ne le saviez-vous pas, mais la version 9 du lecteur Flash intégrait déjà une accélération matérielle "partielle". La carte graphique n’était en réalité sollicitée que lors du passage d’une zone spécifi que du lecteur en plein écran par l’utilisation de la propriété fullScreenSourceRect. Rassurez-vous, nous reviendrons sur cette propriété au Chapitre 20.

Le lecteur Flash 10 étend cette fonctionnalité en bénéfi ciant de l’accélération matérielle pour d’autres opé- rations complexes, comme le rendu des données vectorielles, le décodage de fl ux vidéos, la déformation d’images bitmap ou encore l’affi chage des pixels. Deux types d’accélération matérielle sont confi gurables dans fl ash CS4, depuis l’onglet Flash du menu Paramètres de publication (voir Figure 2.7).

Figure 2.7 Paramètres d’accélération matérielle.

Voici en détail la description de chacun d’entre eux :

Niveau 1 – Direct. En mode direct, le lecteur Flash fait appel à la carte graphique pour dessiner les pixels le plus rapidement possible, sans passer par l’intermédiaire du navigateur.

Niveau 2 – GPU. En mode GPU, le lecteur Flash utilise la puissance de la carte graphique afi n de réaliser des traitements vidéos complexes, comme la conversion YUV, la correction colorimétrique, le redimen- sionnement ou la rotation de vidéos. L’accélération GPU est aussi employée lors de l’affi chage de bitmap en allouant le processus de "blitting" des surfaces bitmap à la carte graphique. Attention, ce mode peut offrir un rendu différent selon les confi gurations.

Pour activer l’accélération matérielle, Flash CS4 passe à l’attribut HTML wmode la chaîne direct ou gpu, lors de la publication. Cet attribut n’est pas une nouveauté du lecteur Flash 10, les précédentes versions permet- taient déjà l’utilisation des valeurs suivantes :

window. Cette option rend l’arrière-plan du contenu opaque et utilise la couleur d’arrière-plan de la page HTML. Le code HTML ne peut pas être affi ché au-dessus ou en dessous du contenu Flash.

opaque. Cette option défi nit l’arrière-plan du contenu Flash opaque, obscurcissant tout ce qui se trouve sous ce dernier. Cette option permet d’affi cher le contenu HTML

transparent. Cette option rend l’arrière-plan du contenu Flash transparent. Ceci permet d’affi cher le contenu HTML au-dessus et en dessous du contenu.

Dans le code HTML suivant, le lecteur Flash 10 utilise l’accélération matérielle en mode GPU :

AC_FL_RunContent( ‘codebase’, ‘http://download.macromedia.com/pub/shockwave/cabs/flash/ swflash.cab#version=10,0,0,0’, ‘width’, ‘720’, ‘height’, ‘576’, ‘src’, ‘rendu1’, ‘quality’, ‘high’, ‘pluginspage’, ‘http://www.adobe.com/go/getflashplayer’, ‘align’, ‘middle’, ‘play’, ‘true’, ‘loop’, ‘true’, ‘scale’, ‘showall’, ‘wmode’, ‘gpu’, ‘devicefont’, ‘false’, ‘id’, ‘rendu1’, ‘bgcolor’, ‘#ffffff’, ‘name’, ‘rendu1’, ‘menu’, ‘true’, ‘allowFullScreen’, ‘false’, ‘allowScriptAccess’,’sameDomain’, ‘movie’, ‘rendu1’, ‘salign’, ‘’ ); //end AC code

Il est donc possible de préciser le type d’accélération sans recompiler le SWF. Si un projet doit soudainement tirer parti de l’accélération matérielle, il suffi t de changer manuellement l’attribut wmode dans la page HTML. Pour la lecture de SWF avec le lecteur autonome, l’environnement auteur de Flash CS4 place dans l’en-tête du SWF un indicateur permettant de préciser le type d’accélération à employer.

En termes de rendu, on peut observer une amélioration d’environ 50 % lors de la lecture de vidéos ou manipu- lation de bitmaps en utilisant l’accélération matérielle en mode GPU.

Les Figures 2.8 et 2.9 illustrent la différence de rendu entre deux SWF. le premier est non accéléré, le second l’est. Nous remarquons une différence de rendu des pixels. Le mode GPU produit une image moins crénelée et des couleurs moins vives. Cette différence potentielle de rendu doit être prise en considération. Notez que l’accélération matérielle en mode direct offre un rendu similaire au mode non accéléré (voir Figure 2.7).

Figure 2.8

Rendu d’une vidéo lue sans accélération matérielle.

Figure 2.9 Rendu d’une vidéo lue avec

l’accélération matérielle en mode GPU.

Afi n de travailler avec la carte graphique, les lecteurs Flash 9 et 10 font appel aux bibliothèques DirectX 9 et Pixel Shader 2.0 sur l’environnement Windows et OpenGL sur Mac OS et Linux. Au cas où la carte gra- phique ne serait pas suffi samment récente ou incompatible, aucune accélération matérielle ne peut opérer, les calculs sont alors entièrement gérés par le processeur. Gardez à l’esprit que le lecteur Flash dé- cide selon des tests bien précis si l’accélération matérielle demandée par le développeur peut opérer. Sous Windows, le lecteur Flash 10 requiert la même confi guration que lors de l’activation du mode Aero. Ainsi, si ce mode ne fonctionne pas correctement sur votre machine, il y a des fortes chances pour que l’accélération matérielle ne tourne pas de manière optimisée avec le lecteur Flash 10.

Sachez qu’une carte graphique est fortement liée aux pilotes l’accompagnant. Ces derniers peuvent ne pas être à jour ni optimisés pour votre confi guration actuelle. Combien de fois avons-nous installé des pilotes qui ne s’avéraient pas optimisés ou défaillants ?

En faisant appel à une accélération matérielle par le mode GPU, le lecteur Flash 10 n’affi chera pas forcément les mêmes couleurs, le rendu pourra alors différer selon chaque confi guration. Dans ces conditions, l’internaute peut décider de désactiver volontairement l’accélération par l’intermédiaire de l’onglet approprié au sein des paramètres du lecteur Flash (voir Figure 2.10).

Figure 2.10 Activation et désactivation de l’accélération matérielle.

Nous pouvons alors nous demander quel est le type d’applications ciblé pour ces deux modes d’accéléra- tion ?

De manière générale, ces deux modes doivent être utilisés sur du contenu en mouvement perpétuel occupant une large surface de l’écran. La lecture de vidéos en plein écran ou la forte manipulation d’images bitmap au sein d’un jeu s’avèrent être des cas propice à ce type d’accélération. Au cours de l’ouvrage, nous n’aurons quasiment jamais recours à ces deux modes.

Au cas où l’accélération matérielle serait retenue pour votre projet, sachez qu’un seul et unique SWF au sein du navigateur doit bénéfi cier de l’accélération matérielle en mode GPU ou direct. Si plusieurs SWF en bénéfi cient, l’occupation mémoire du navigateur risque de devenir trop importante. Cela provoquerait inévitablement un plantage du navigateur.

■ Le lecteur Flash 9 intégrait une accélération matérielle partielle.

■ Celle-ci opérait uniquement lors du passage d’une zone spécifi que du lecteur en plein écran par l’intermédiaire de la propriété fullScreenSourceRect.

■ Le lecteur Flash 10 supporte une accélération matérielle complète. Pour activer l’accélération, nous utilisons l’attribut wmode de la page HTML.

■ Contrairement au mode GPU, le mode direct n’offre pas de différence de rendu. ■ L’accélération matérielle doit être considérée dans des conditions spécifi ques établies.

■ De manière globale, l’accélération matérielle peut être désactivée dans les paramètres des lecteurs Flash 9 et 10.

■ Un seul et unique SWF au sein du navigateur doit bénéfi cier de l’accélération matérielle par mode GPU ou direct.

Passons à présent aux nouveautés liées à l’interface de programmation du lecteur Flash. Les deux grandes nou- veautés apportées par le lecteur Flash 9 concernent la gestion de l’affi chage ainsi que le modèle événementiel. Au cours du prochain chapitre, Le modèle événementiel, nous allons nous intéresser à ce nouveau modèle à travers différents exercices d’applications. Nous apprendrons à le maîtriser et découvrirons comment en tirer profi t tout au long de l’ouvrage.

Puis, au Chapitre 4, nous nous intéresserons au nouveau mécanisme de gestion de l’affi chage, appelé liste d’af- fi chage. Nous verrons qu’il offre beaucoup plus de souplesse en termes de manipulation des objets graphiques et d’optimisation de l’affi chage.

Vous êtes prêt pour la grande aventure ActionScript 3 ?

Documents relatifs