Mini tuto sur les shaders

Un article de Wiki-Mapping.

Version du 25 octobre 2007 à 22:56 par Psylopat (Discuter | contribs)
(diff) ← Version précédente | view current revision (diff) | Version suivante → (diff)
Jump to: navigation, search

Sommaire

[modifier] 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 ligne mamap a la fin de shaderlist.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

[modifier] 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...


[modifier] 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):

[modifier] Sources