Shaders (RWW)
On supposera que les logiciels utilisés sont 3D Studio MAX pour la modélisation 3D et Adobe Photoshop pour la création de textures.
Quelques mots à propos des exemples figurant dans ce ou ces documents.
Étant donné que nous avons utilisé 3D Studio MAX pour créer le contenu de Rail Simulator, ce programme figure dans les exemples que nous avons donnés. Vous pouvez bien sûr utiliser d’autres logiciels comme Blender ou 3D Canvas pour créer votre propre contenu. De même, nous avons utilisé Adobe Photoshop pour créer les textures, mais vous pouvez également utiliser l’un des nombreux autres programmes disponibles. Quel que soit le logiciel utilisé, ce document doit apparaître comme un guide général de la méthode à adopter pour créer votre propre contenu pour RailWorks.
Note importante : il se peut que des plug-ins additionnels pour le logiciel que vous utilisez soient requis pour rendre votre travail utilisable dans RailWorks. Il se peut que certains plug-ins ne soient pas disponibles immédiatement, mais ceux-ci sont en cours de finalisation dans nos studios.
Sommaire
Texture vide (dummy)
Certains shaders requièrent plusieurs passes de textures distinctes. Avec un shader de reflet, par exemple, la texture générant les reflets est appliquée lors d’une seconde passe d’affichage lors de l’exécution.
La description de certains shaders figurant dans ce document mentionne une « texture vide » (dummy texture) parmi le jeu de textures utilisées. Ces textures supplémentaires sont présentes pour rendre possible les effets de multi-texturage en exécution. <?>
Dès lors, peu importe l’apparence des textures référencées en tant que texture vide puisqu’elles vont être remplacées quoi qu’il arrive.
Cependant, pour s’assurer que les shaders restent simples et cohérents, nous recommandons l’emploi d’une seul et même texture de petites dimensions (appelée par exemple vide.ace) de manière que toutes les références à une texture vide utilisent la même texture.
Par exemple :
Shader TrainEnv
Emplacement texture 1 : texture en lumière diffuse Emplacement texture 2 : texture vide
IMAGE ICI
Familles de shaders
Il existe deux familles de shaders : les shaders simples et ceux à effets spéciaux.
Shaders simples
Ces shaders sont les moins complexes et utilisent en général moins de textures que les shaders avec effets. De ce fait, ils ont dans le jeu une apparence plus basique.
| Utilisation | Nom | Description | Exemples d'utilisation |
|---|---|---|---|
| Objet insensible à l'éclairement | Tex | Shader non pris en compte par l'algorithme d'éclairement (ne peut pas s’assombrir) | Intérieur d’une voiture, d'un bâtiment éclairé, vitres des maisons la nuit (sans transparence) |
| Objet tout venant | TexDiff | Shader illuminé par lumière diffuse | Tout objet soumis à l'algorithme d'éclairement |
| Fenêtres | BlendATexDiff | Shader utilisant l’alpha blending (objets translucides) | Fenêtres d’une voiture (on préfèrera TrainGlass.fx) |
| Zone illuminée | AddATex | Shader utilisant une couche alpha additive | Lueur d’un lampadaire sur le sol |
Shaders à effets
Ces shaders sont plus complexes que les précédents et tendent nécessiter plus de passes texture. Ainsi, ils peuvent donner un rendu plus intéressant et/ou réaliste dans le jeu.
| Utilisation | Nom du shader | Description | Exemples d'utilisation |
|---|---|---|---|
| Ombres volumiques | StencilShadow | Shader utilisé uniquement pour les volumes d'ombre dans le jeu. Pour garantir le bon fonctionnement de ce shader, il faut respecter des préconisations assez strictes lors de la création des volumes d’ombre. Ne pas utiliser depuis TS2012. | Ombres volumiques |
| Feuillage | TrainFlora TrainViewFacingFlora TrainUprightViewFacingFlora |
Shaders exclusivement illuminés par l’éclairage ambiant (pas d’éclairage diffus, donc pas de variation selon l'orientation des faces). Peuvent avoir des propriétés particulières comme l'orientation dynamique vers l'observateur. | Ensemble de feuilles d’un feuillage |
| Extrusions | LoftTexDiff LoftTexDiffTrans |
Shaders spécialisés pour l’extrusion de profils dans le jeu. Peuvent avoir des propriétés de transparence (variante LoftTexDiffTrans). | Mur de briques (LoftTexDiff) Rangée d’arbres (LoftTexDiffTrans) |
| Reflets | TrainEnv | Shader générant les reflets lors d’une seconde passe | Les fenêtres brillantes d’une maison (sans transparence) |
| Bâtiments | TrainLightMapWithDiffuse | Shader rendant possible l’utilisation d’une seconde passe pour pré-ombrer un objet. Permet de donner plus de profondeur à un objet. | Gares, bâtiments divers |
| Eau | WaterCubeMap | Shader pouvant être utilisé pour générer la surface de l’eau | Rivière |
| Matériel roulant | TrainBumpSpecEnvMask | Métal bosselé et brillant | Côtés d’une locomotive (aspect gondolé) |
| TrainSpecEnvMask | Métal brillant et lisse | Les flancs d’une locomotive (aspect lisse) | |
| Tout objet (variante à effets) | TrainBasicObjectDiffuse | Version à effet du shader standard (=TexDiff) | Tout objet soumis à l'éclairement |
| Personnages | SkinDiffuse | Shader de peau spécifique pour les personnages humains. Il existe des préconisations qui doivent être respectées lors de la création de personnages, afin de s’assurer que le squelette correspond bien à celui voulu dans le shader. | Personnages humains et animaux à peau |
| Ciel | TrainSkyDome | Shader spécifique pour la création de ciel dynamique | Le ciel |
Propriétés du matériau
- Simple face ou double face ?
Le plug-in matériau supporte des polygones qui peuvent avoir la propriété d’être texturés soit sur une face, soit sur les deux. Les shaders traitent cette propriété de façon différente selon qu’ils sont avec ou sans effets spéciaux.
- Shaders simples
Par défaut, les shaders simples (sans effets spéciaux) rendent les polygones texturés sur les deux faces.
Si vous utilisez un shader simple, et que vous ne voulez texturer les polygones que sur une seule face, alors vous devez activer l’option « back-face cull » dans les propriétés du matériau.
- Shaders à effets
Par défaut, les shaders à effets rendent les polygones texturés sur une seule de leurs deux faces.
Si vous utilisez un shader à effets, et que vous voulez texturer les polygones que sur les deux faces, alors vous devez activer l’option « 2-sided » dans les propriétés du matériau.
| Guide de création (traduction du RailWorks Wiki) | |
|---|---|
| Bases | Développer une création |
| Lignes directrices | Principes de base |
| Création | Voies ferrées |
| Graphismes | Shaders |
| Terrain | Application des textures |