Reference Manual‎ > ‎Art Guidelines‎ > ‎

Shaders

Introduction

It is assumed that the 3D modelling package used is Autodesk® 3ds Max® and the package used for authoring textures is Adobe® Photoshop.

The modelling package Autodesk® 3ds Max® was used to create Train Simulator, so this product appears in the examples provided. You can, of course, use other packages such as Blender™ or amabilis 3D Crafter. The package used here for authoring textures is Adobe® Photoshop. Again, you may use one of the many other packages available.

Regardless of the packages you use, the documents below should be used as a general guide to the processes to follow to build assets for Train Simulator.

Important Note: For your chosen package, you may need additional plug-ins to export the assets into Train Simulator. Please check the availability of a suitable plug-in before you begin creating assets.

Dummy Texture

On some shaders, there is a requirement for multiple texture pass effects. An example would be a reflection mapped shader, where the reflection map is applied as a secondary render pass at run-time.

Some of the shader descriptions listed within this document make references to a ‘dummy texture’ in one or more of the texture slots. These extra texture slots are present to allow the code to apply one of these multi-pass effects at runtime. It is therefore irrelevant what textures are referenced in these dummy texture slots (as they will get replaced regardless).

However, to ensure that the shaders are kept consistent and simple, it is recommended that a single small texture is created (called for example "dummy.dds" or "dummy.ace") and all references to dummy texture slots use this single texture.

For example:

TrainEnv
Texture slot 1 – diffuse texture
Texture slot 2 – dummy texture

Shaders

Non-FX Shaders

Unlit Object

 Tex
 Description: This shader is unlit (it is not affected by the in-game lighting and therefore stays at full brightness irrespective of the time of day). 
 Example Use: Interior of passenger coaches, building windows at night (opaque) and lit signs.

General Clutter Object

 TexDiff
 Description: This shader is lit by diffuse lighting.
 Example Use: Small clutter objects (that do NOT require shadow maps).

Windows

 BlendATexDiff
 Description: This shader uses alpha blending.
 Example Use: Windows on a train.

Light Glows

 AddATex
 Description: This shader uses additive alpha.
 Example Use: Light glows on the ground or Signal lamp glows

FX Shaders

These shaders are more complex than the non-FX shaders and tend to have more texture passes. As a result, they can appear to have more depth and overall a more interesting/realistic surface in-game.

Stencil Shadows

 StencilShadow
 Description: This shader is used specifically for the in-game stencil shadows. For this shader to function correctly, there are strict guidelines which must be adhered to when authoring shadow shapes. Please see authoring guides.
 Example Use: Stencil shadows.

Foliage

 Train Flora, TrainViewFacingFlora, TrainUprightViewFacingFlora
 Description: These are solely lit by ambient lighting (no diffuse lighting), and can have view-facing properties.
 Example Use: Groups of leaves on foliage.

Lofts

 LoftTexDiff
 Description: These are specific shaders used for generating in-game lofts. These shaders support transparency if required.
 Example Use: A brick wall.

 LoftTexDiffTrans
 Description: These are specific shaders used for generating in-game lofts. These shaders support transparency if required.
 Example Use: A tree-line

Reflection Map

 TrainEnv
 Description: This shader has a second pass reflection map.
 Example Use: Shiny glass windows on a building (opaque).

Buildings

 TrainLightMapWithDiffuse
 Description: This shader allows for a second pass shadow map which allows the asset to have a pre-lit appearance. This helps to give the asset's lighting more depth.
 Example Use: Buildings and Stations.

Water

 WaterCubeMap
 Description:This shader can be used to generate water surfaces.
 Example Use:Water lofts

Rolling Stock

 TrainBumpSpecEnvMask
 Description:Shiny bumpy metal.
 Example Use:The sides of a locomotive, slightly beaten in appearance.

 TrainSpecEnvMask
 Description:Shiny smooth metal.
 Example Use:The sides of a locomotive, smooth in appearance

General Clutter Object (FX Shader)

 TrainBasicObjectDiffuse
 Description:FX shader version of the basic shader.
 Example Use:Small clutter objects that do NOT require shadow-maps.

Characters

 SkinDiffuse
 Description:Skin shader specifically written for in-game characters. There are guidelines which must be followed when creating characters to ensure the character skeleton matches the expected skeleton within the shader.
 Example Use:Skinned characters or wildlife.

Sky

 TrainSkyDome
 Description:Skin shader specifically written for creating dynamic skies.
 Example Use:Skies

Material Properties

The material plug-in supports polygons with single or double-sided properties. The non-FX and FX Shaders handle this property slightly differently.

Non-FX Shaders

Non-FX Shaders render polygons double-sided by default. If using a Non-FX Shader and single-sided polygons are required, then the 'back-face cull' flag needs to be checked in the material.

FX Shader

FX Shaders render polygons single-sided by default. If using an FX shader and double-sided polygons are required, then the '2-sided' flag needs to be checked in the material.