Contents |
Exemple de shader
Ce tutoriel vous apprendra comment utiliser le shader stat_dyn_reflect dans Crystal Space.
Exemple
Voici un exemple de ce que donne ce shader :
Comme vous pouvez le voir la texture du métal est statique et le reflet appairait uniquement là où il y a une surface non-blanche sur le fichier masque.
Voici le fichier de masque utilisé.
Définition des fichiers
- Le métal auquel vous voulez ajouter des reflets est : metal.jpg.
- La texture réfléchissante, qui flottera et créera la surface réfléchissante : reflection.jpg.
- Et le masque qui masquera ce qui sera réfléchi ou non : reflection_mask.jpg.
Si vous n'utilisez pas les shaders, vous obtiendrez ceci :
Vous pourriez dire que c'est plus beau, oui peut-être sur une image statique, mais dans un jeu, les reflets sont grandioses !!!
Fonctionnement
- Il ne crée aucune reflet là où le masque de texture est blanc à 100%.
- Il créera un reflet complet là où le masque de texture est noir à 100%.
- Entre les deux il créera des reflets, la texture statique s'accordant à la quantité de claire et de sombre du masque.
Utilisation
Chargement des textures
La première chose nécessaire à faire, est d'ajouter le chargement des textures que vous utilisez :
<textures> ... (autres textures) ... <texture name="metal"> <file>metal.jpg</file> </texture> <texture name="reflection_mask"> <file>reflection_mask.jpg</file> </texture> <cubemap name="reflection"> <north>reflection.jpg</north> <south>reflection.jpg</south> <east>reflection.jpg</east> <west>reflection.jpg</west> <top>reflection.jpg</top>> <bottom>reflection.jpg</bottom> </cubemap> </textures>
reflection est ajoutée en tant que cubemap pour empêcher le reflet de paraître sale et moche. Au lieu d'utiliser une texture, il utilise 6 textures différentes (j'utilise la même pour empêcher de prendre trop de mémoire).
Chargement du shader
Ensuite vous avez besoin de charger le shader :
<shaders> <shader> <file>/shader/stat_dyn_reflect.xml</file> </shader> </shaders>
C'est la partie dans laquelle vous chargez le shader dans le fichier World, vous pouvez ajouter de multiples shaders si vous utilisez d'autres shaders bien sûr.
Ajout du shader dans un matériau spécifique
<material name="metal.jpg"> <texture>metal.jpg</texture> <shader type="standard">stat_dyn_reflect</shader> <shadervar name="tex reflection" type="texture">reflection</shadervar> <shadervar name="tex mask" type="texture">reflection_mask.jpg</shadervar> </material>
Ce sont les variables qui sont utilisées dans le shader pour créer les reflets et le masque, mais seulement pour ce matériau spécial. Si vous voulez utiliser un autre masque (ou reflet), importer simplement une autre texture (nommée mask2.jpg, etc.) ensuite appliquez la dans l'autre matériau dans lequel vous voulez utilisez le shader stat_dyn_reflec.
Mais vous pouvez bien sûr utiliser la même texture autant de fois que vous le voulez.
Résultat final
Le fichier source final devrait ressembler à ceci :
<world> <textures> <texture name="metal.jpg"> <file>metal.jpg</file> </texture> <texture name="mask.jpg"> <file>mask2.jpg</file> </texture> <cubemap name="reflection"> <north>reflection.jpg</north> <south>reflection.jpg</south> <east>reflection.jpg</east> <west>reflection.jpg</west> <top>reflection.jpg</top> <bottom>reflection.jpg</bottom> </cubemap> </textures> <shaders> <shader><file>/shader/stat_dyn_reflect.xml</file></shader> </shaders> <materials> <material name="metal.jpg"> <texture>metal.jpg</texture> <shader type="standard">stat_dyn_reflect</shader> <shadervar name="tex reflection" type="texture">reflection</shadervar> <shadervar name="tex mask" type="texture">mask.jpg</shadervar> </material> </materials> ... </world>
Créé par : Anders Wisur (Xotic)
Langage:
English •
Brazilian •
Chinese •
Español •
Esperanto •
Français •
Magyar
Make a translation


