3ds Max Materials, Maps and Textures
When a geometry object is created in 3ds Max, it has no material assigned to it. The object has a wireframe color which is used for both realtime display and when rendering. This object color is by default assigned randomly from a standard or user-defined paletter. The object color can also be set to inherit from the object's layer.
Every geometry object in 3ds Max can be assigned a top-level material to define the surface properties like diffuse and specular color, glossiness, opacity, reflection, refraction and so on. Top-level materials (equivalent to Surface Shaders in other applications) can contain two types of sub-objects - sub-materials (other Surface Shaders) and maps (Color Shaders). Some materials like the Standard or Raytrace material do not provide connection slots to branch into sub-materials, while others like Multi/Sub-Object, Double Sided, Top/Bottom, Blend, Shellac etc. can host sub-materials and combine them in special ways. For example, Double-Sided can contain two sub-materials, one defining the surface properties on the side of the face normals, the other defining the surface properties of the backside of the faces. Mutli/Sub-Material is a special case as it assigns its sub-materials to specific faces based on the faces' Material ID property assigned at mesh level. Most base materials provide a list of "shaders" which change the algorithm used by the material to calculate the surface properties, light reflection etc. For example, the Standard Material provides the shader modes Anisotropic, Blinn, Metal, Oren-Nayar-Blinn, Phong, Strauss, Translucent and could contain even more shaders implemented by 3rd party plugins like HairFX, Ornatrix etc.
Maps on the other hand either generate or manipulate color data and are used as color input for various material channels. These include the Bitmap Texture map which reads an image file and uses its pixel colors as its output, procedural 2D maps which generate a 2D color image, procedural 3D maps which generate colors in 3D space (either object, world or UVW space), and color manipulation maps like RGB Tint, RGB Multiply, Output, Mask, Mix etc. which manipulate incoming colors to produce new output colors.
The depth of a 3ds Max material tree (equivalent to shader tree) can be arbitrary. The only rule is that materials are connected to material slots of the parent material and maps are connected to map slots of the parent material or map. Materials cannot be connected to maps or map slots of other materials.
Materials and Maps can be copied or instanced. Note that if a material is assigned to multiple scene objects, it can be considered as instanced between these objects - getting the material from any of the objects and changing its properties will affect all objects it is assigned to. Also note that scene object instances whose geometry is shared between multiple nodes are allowed to have different materials since the material is assigned at the node level and the node is unique between instances to allow unique Position, Rotation, Scale values and Object Properties.
The 3ds Max Material Editor (whose design has not changed much since R1 and R2) is implemented as a floating dialog showing either 6, 15 or 24 samples which can be rendered as spheres, boxes, cylinders or as a custom object by the current renderer (if supported). When less than 24 samples are shown, the user can scroll the samples around to access the "hidden" ones. Contrary to the initial impression of new users, 3ds Max does not limit the user to 24 materials, the 24 slots are only a "mixing palette" for the materials. A 3ds Max scene can contain an arbitrary number of materials - materials assigned to objects are saved with the scene and "live" in the scene. They can be loaded into any slot of the Material Editor for editing (displayed as "hot" by triangular brackets in the sample's corners). Materials can also be put into the currently loaded library and saved with it for later use. If a material is assigned to a scene object, deleting it from the sample slot or replacing it with another material does not affect the material assigned in the scene. To assign a material to scene object, the user can either select one or more objects and press the Assign Material To Selection button in the Material Editor, or drag and drop the material onto scene objects or the current selection.