Mini tuto sur les shaders
Un article de Wiki-Mapping.
Sommaire |
Généralités
Les shaders sont contenus dans les fichiers *.shader
dans le dossier etmain/scripts/. Les shaders sont associés à des textures afin d'en modifier l'apparence.
Chaque fichier *.shader
doit apparaitre dans le fichier shaderlist.txt
(situé dans le même dossier)
- ex : J'ai créé
mamap.shader
> j'ajoute une lignemamap
a la fin deshaderlist.txt
Le fichier mamap.shader
contient plusieurs shaders qui sont utilisés dans gtkradiant de la même manière que les textures, c'est a dire que l'on peut mettre à la suite dans le meme fichier différents codes concernant différentes textures.
Un shader s'écrit sous la forme :
localisation_de_mon_shader { Contenu_de_mon_shader }
localisation_de_mon_shader
est généralement de la forme textures/mon_dossier/mon_shader
Ceci permet de retrouver mon_shader
dans le sous-dossier mon_dossier du dossier textures de gtkradiant
Contenu du shader
Tout d'abord, a chaque fois que l'on voit le symbole //
dans le fichier shader, tout ce qui suit sur la même ligne est un commentaire (et n'affecte donc pas le shader).
Toutes les propriétés (ou presque) que l'on peut mettre dans Contenu_de_mon_shader se trouvent sur le site : shaderlab.com. Dans la suite, lorsque je parle de site, je fais référence a celui-ci.
On trouve généralement tout d'abord une ligne de la forme :
qer_editorimage textures/[le chemin vers ma texture tga ou jpg]
Cette ligne indique quelle texture représentera le shader dans gtkradiant (vous avez je pense déja remarqué que pour les shaders du genre terrain, on a droit a un beau damier...). Si on ne précise pas par la suite de textures a appliquer, c'est cette texture qui sera utilisée.
Viennent ensuite une série de lignes décrivant les caractéristiques générales du shader (voir le site pour avoir la liste et leurs propriétés):
- Paramètres de surface (voire de volume...) (voir chapitre 4 sur le site) :
surfaceparm [xxxxxxxx]
- Diverses propriétés, souvent a définir par des attributs (angles, directions, intensité....) (voir chapitre 3 sur le site)
q3map_[yyy] [attributs]
- Autres... (voir chapitre 2 et 5 du site) déformation de la surface (
deformVertexes
) , dessin des 2 cotés d'une surface pour une toile par exemple (cull
)....
Enfin, on a la définition des textures appliquer. Un des grands avantages des shaders est que l'on peut définir plusieurs textures et la manière dont elles vont se mélanger... (voir chapitre 6 sur le site)
Chacune de ces textures est définie dans une nouvelle paire d'accolades :
textures/mon_dossier/mon_shader { propriétés générales { Définition de la textures 1 et de ses propriétés } { Définition de la textures 2 et de ses propriétés } }
Dans ces accolades va définir la texture a utiliser grace a la commande map :
map "localisation_de_ma_texture_jpg_ou_tga"
On peut modifier les dimensions de cette texture grace a la commande tcMod
(mise a l'échelle / rotation / mouvement de la texture et autres...)
Les commandes blendfunc
et alphafunc
gèrent le mélange des textures et leur transparence. Ainsi, si j'ai deux texturs différentes, je vais pouvoir controler si j'applique la deuxième simplement par dessus, si je la mélange (et de quelle manière), si je peux voir uniquement la première a certains endroits tranparence gérée par le canal alpha de mon tga...
En savoir plus
N'oubliez pas que vous pouvez a chaque instant dans radiant voir le contenu d'un shader en faisant shift+click dessus dans la fenêtre textures. Ca aide beaucoup lorsque l'on se demande "comment c'est fait cet effet? Ca pourrait me servir pour ce machin!" Les shaders sont quelquechose de compliqué a maitriser mais les résultats sont le plus souvent assez formidables
Quelques exemples de ce que l'on peut faire de beau (en anglais):
- Saberspeak (dont on peut d'ailleurs télécharger le .map)
- the well of youth
- Terrain Alpha blending
- Terrain blending
- Tuto sur l'utilisation de dotProduct2(on retrouve le lien dans le sujet "Terrain blending")
Sources
- Easymapping, post de Gnoun, 06/07/2005