mardi 21 août 2012

Minko / shader lab, mon premier shader

ShaderLab est un bon outil pour apprendre à créer des shaders, il permet en temps réel de les tester et de voir les possibles messages d'erreurs.
Le shader par défaut permet de colorer un objet et de l'éclairer à partir de la caméra. Pour bien comprendre, un shader est divisé en 2 parties : Vertex Shader (en bleu dans shader lab), qui permet de traiter le positionnement des vertex, et le Fragment Shader (en jaune dans shader lab) qui permet de traiter les pixels à afficher.
Le shader n'est pas un langage de programmation avancé. Il n'y a, par exemple, pas d'instruction if ou de boucle. Tout doit se faire par opérations mathématique.

Pour débuter notre premier shader, nous allons supprimer tous les noeuds, et ne laisser que Output Position et Output Color. Ces deux noeuds correspondent aux résultats de nos opérations, et à ce que la carte graphique doit afficher.

Output Position :

Les vertex correspondent (entre autre) aux coordonnées XYZ d'un point, qui composent des triangles, qui composent à leur tour un objet 3D. Cet objet peut être déplacé dans le monde 3D, sans pour autant changer les coordonnées de ses vertex. Les matrices contiennent des informations concernant la position, la rotation et la taille. Pour afficher un objet 3D à l'écran, il faut prendre les coordonnées de ses vertex (locales), les transformer en coordonnées relatives au monde, puis, transformer ces coordonnées en coordonnées relatives à la caméra. Ces transformations se font par multiplications de la matrice avec le vertex.
coordonnées écran = coordonnées locales * matrice monde * matrice caméra * matrice projection

Le vertex Shader le plus simple, décomposé

Output Color :

Le Output Color attend une float4, c'est à dire une valeur à 4 composants RGBA, ce qui permet de connaitre la couleur du pixel à remplir.

Le Fragment shader le plus simple (aplat de couleur)


Aucun commentaire:

Enregistrer un commentaire