Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Silverlight : composer des effets

[new:08/07/2010] Lorsqu’on joue un peu avec les effets fournis avec Silverlight 4 (pixel shaders) on tombe assez vite sur une limite qui semble infranchissable : les objets n’acceptent qu’un seul effet, et placer un nouvel effet ne s’ajoute pas au premier mais le remplace. Damned ! Bien entendu il existe une solution…

L’astuce est simple alors je n’en ferai pas des tonnes : le principe consiste a imbriquer l’objet dans des containeurs et à appliquer chaque effet sur chaque containeur…

image

L’objet décoré (l’étoile centrale) est agrémentée de l’effet 1, puis on englobe l’étoile dans un canvas sur lequel on applique l’effet 2, puis on englobe le canvas dans un autre canvas sur lequel on applique l’effet 3, etc, etc …

L’ordre dans lequel les effets sont appliqués peut avoir un impact sur le visuel mais une fois les “n” niveaux de “poupées russes” créés, il suffit juste de changer les effets appliqués à chacun pour tester la combinaison qui donne le meilleur résultat.

Conclusion

C’est simple, facile à faire (sous Expression Blend on sélectionne un objet et on demande grouper dans un canvas, en xaml on entoure tout simplement d’une balise canvas), et ça permet d’appliquer autant d’effets que nécessaire.

Attention ! Les pixel shaders ne bénéficient pas de l’accélération matérielle GPU. Et certains effets sont, comme tout traitement d’image, un peu lourds… En m’amusant de la sorte je suis souvent arrivé à une application SL qui prenait presque 100% de mon double cœur overclocké… (surtout quand on ajoute des animations qui oblige les effets à se recalculer pour chaque image). Alors n’ayez pas la main trop lourde, et vérifiez toujours l’impact en jetant un œil à l’outil de performance de Windows !

Et pour d’autres nouvelles … Stay Tuned !

blog comments powered by Disqus