Accueil
Articles
Astuces
Vidéos
Actualités
Auteurs
A propos
Contact
S'enregistrer
|
S'identifier
S'identifier
Authentification invalide
N
om d'utilisateur
M
ot de Passe
S
e souvenir de moi la prochaine fois.
S'identifier
Annuler
S'enregistrer
Mot de passe oublié ?
WPF : Effets et Pixel Shaders
Le SP1 du Framework .NET 3.5 apporte à WPF un certain nombre d’améliorations dont les effets sur les images. Une « fenêtre » pour l’utilisation des pixel shaders de DirectX a été ouverte.
Par
Frédéric Mélantois
publié le 12/01/2009 à 09:06, lu 2186 fois, 6 pages
1 commentaire(s)
Tags:
Windows Presentation Foundation
,
C#
,
DirectX
,
WPF
1 | Introduction sur les pixel shaders
1 | Introduction sur les pixel shaders
2 | Développement de l’effet à partir de ShaderEffect
3 | Développement du Pixel Shader en HLSL
4 | Quelques exemples simples de pixel shader
5 | Du filtrage un peu plus élaboré (plus proches voisins)
6 | Conclusion
Introduction sur les pixel shaders
Windows Presentation Foundation est un framework de présentation s’appuyant très largement sur DirectX. Bien que le but annoncé ne soit pas de réaliser des applications aussi époustouflantes et performantes que les jeux codés sous DirectX, le framework offre depuis sa version 3.0 une forte personnalisation de l’interface Windows, ce que ne permettaient pas les Winforms classiques. Si le fort degré de liberté de création est un des atouts de WPF, certaines briques du framework se sont montrées un peu légères concernant les performances. Le Service Pack 1 a apporté son lot d’améliorations indispensables à la maturité de cette technologie. Les effets d’images font parties de ces améliorations.
WPF proposait dès son origine quelques classes permettant de créer des effets sur les images. Toutefois, très vite, l’utilisation de ces classes ne fut plus très recommandée du fait du manque de performance des effets employés.
Ces classes sont :
Il faut savoir que celles-ci n’utilisent pas l’accélération matérielle. Avec le Framework 3.5 SP1, elles sont considérés comme obsolètes et il est fort possible que ces classes disparaissent dans le futur Framework 4.0.
Deux classes permettant d’effectuer des effets sur les visuels ont fait leur apparition avec le Service Pack 1, il s’agit des classes « BlurEffect » et « DropShadowEffect ». Elles se substituent respectivement à « BlurBitmapEffect » et « DropShadowBitmapEffect » et intègrent l’accélération matérielle.
Avant le Service Pack 1, si on voulait développer un effet personnalisé, on dérivait de la classe « BitmapEffect ». Mais malheureusement, votre développement ne pouvait pas utiliser les capacités de la carte vidéo. Avec le Service Pack 1, une nouvelle possibilité s’offre à vous : l’utilisation des Pixel Shaders de Direct3D.
Les shaders sont des petits programmes qui sont exécutés par le processeur de la carte vidéo. Ils sont en charge d’effectuer les calculs de couleur des points affichés à l’écran en fonction des données fournies. Ces données sont des points, l’association de ces points sous forme de primitives (ligne, triangle) et enfin la texture. Sous DirectX, il existe plusieurs types de Shaders : les Vertex Shaders (qui ont fait leur apparition sous DirectX 8), les Pixel Shaders. Les vertex Shaders sont dédiés aux calculs sur les points et primitives. Les pixel shaders s’occupent de calculer la couleur d’un point ou d’un ensemble de points. Pour information, sachez qu’il existe un autre type de shaders : les Geometry Shaders qui ne sont pas implémentés dans DirectX 9 mais à partir de DirectX 10. Ils sont en charge de générer de nouvelles primitives.
Un Pixel Shader est un mini-programme prenant en charge les pixels d’un échantillon (Image, texture…). Avant la version 9 de DirectX, ce sous-programme devait être codé en langage assembleur. D’ailleurs, un certain nombre de développeur DirectX continue à coder de cette façon. Depuis la version 9, Microsoft a introduit un nouveau langage de plus haut niveau pour gérer les shaders. Il s’agit du langage HLSL (High Level Shader Language). Ce langage évolue à chaque nouvelle version de DirectX. L’équipe WPF de Microsoft a fixé la version que l’on peut mettre en œuvre au sein des applications compatibles Framework 3.5 SP1. Il s’agit de la version 2.0.
A partir de DirectX9, la version 2.0 des Pixel Shaders permet une programmation unifiée quelque soit la carte vidéo, ce qui n’était pas le cas pour la version 1.4 sous DirectX 8.1. Un Pixel Shader sous la version 2.0 peut prendre en charge 64 instructions au lieu de 32 sous DirectX8. De plus, il utilise des registres (32 au maximum) et des constantes (12 au maximum). Sachez que la version 2.0 est une ancienne version et elle est donc limitée en termes d’instructions mais elle correspond à un plus grand nombre de cartes vidéo pour la compatibilité. C’est sans doute pour cette raison que l’équipe WPF s’est arrêtée sur la version 2.0. Nul doute que les prochaines versions du Framework WPF verront les versions des Pixel Shaders augmenter du fait de l’évolution de la compatibilité du parc des cartes vidéo.
Vous l’aurez compris, le Service Pack 1 offre la possibilité de fournir son propre sous-programme de Pixel Shader afin de manipuler les pixels d’un visuel WPF (une surface DirectX). La performance est considérablement améliorée car le pixel shader est directement exécuté par le processeur de la carte vidéo et bénéficie du parallélisme.
1
2
3
4
5
6
»
Démarrer une discussion
Outil de creation de pixel shaders et post-effects
Chargement ...
Discussion démarée par
tanuki
le 11/05/2009 à 18:20, 1 commentaire(s).
Ecrire un commentaire
Titre
Commentaire
Annuler