This shader allows for up to 16 layers of textures to be composited
Each layer can modify one or more parameters of the base layer.
The color from the texture map for the layer can be tinted by
the corresponding color before it is applied to the base layer
The compositing operations are:
    multiply - The layer color will multiply the base color
    add      - The layer color will be added to the base color
    sub      - The layer color will be subtracted from the base color
    over     - The layer color will be composited over the base
               the base color using the alpha of the texture
Each texture can be tiled to repeat, to streak its edges or as a decal.
If the texture file is a .rat file, the texture can be filtered and
blurred at render time.

Texture coordinates for each layer can be aquired using several
methods
    uv       - The geometry texture coordinates for the layer are used
               if the texture coordinates do not exist, the surface
               parametric coordinates are used.
    uvname   - The attribute name of the texture coordinates for the layer.
               This allows you to use one set of texture coordinates
               for multipe layers.
    sphere   - A polar projection (using the projection transform)
    cylinder - A cylindrical projection (using the proj transform)
    ortho    - An orthographic projection (using the proj transform)
When applying projections to compute texture coordinates, the
coordinates may be computed in world, object, shader or NDC space

Roughness controls the size of the specular highlight
The lighting model controls the shape of the specular highlight
The constant lighting model will simply apply the diffuse color
to the surface
Opacity is computed using the Alpha of each layer.  After the layer
opacity has been computed, the opacity is scaled by the alpha-para/perp
and filtered by the transmit color.
Tinted ambient will scale the ambient light by the diffuse
  color component resulting in more saturated colors
When computing reflections, it is possible to scale the reflected
  light using the Fresnel equation
Reflection bias is used to limit self-reflections
