As part of the material merging, Effect LOD, and Wind LOD functionality, the Compiler will create the shortest shader possible for each piece of geometry in per-LOD per-tree in an atlas. This could possibly result in a great many shaders being created for a particular atlas, but it ensures that every pixel on the screen is rendered using the absolute minimum number of vertex and fragment instructions. The shaders are named using hashes of their features so that duplicate shaders are not created.
Shaders can be created for a number of different platforms. The currently supported platforms are: DX9, DX10, DX11, OpenGL GLSL, XBox 360, PS3, and PSP2 (Vita). When shaders are created and possibly compiled for these platforms, they will be placed in subdirectories of the atlas directory with names corresponding to the platform (E.G. shaders_dx9, shaders_dx10, etc.).
After all of the different shaders for a particular tree are created, they can be pre-compiled to save the time of compiling during load in the game/application. There are a number of properties for controlling shader compilation in the Compile object's property group “Shader Compilation”. The “Shader Compilation:Leave source” property will leave the original source code of the shaders intact after compilation; the normal step is to delete them when complete.
On platforms other than Microsoft Windows, shader compilation is not available since many of the compilers only run on Windows. Shader source can still be created, however. Note that GLSL shaders are never pre-compiled.