I am trying to figure out the difference between a "Material" and a "Material Pass" (in theory). Is it basically that a Material will have multiple "Material Pass"'es, along with a name. Then the "Material Pass" will have the references to the texture, shaders and property values that need to be set?
You haven't given us much context about where you heard these terms. Their meanings can vary, but generally they mean the following.
A material usually refers to the collection of textures that produce a certain surface look. This can include the ambient/diffuse light texture, the normal map, the ambient occlusion map, the specular exponent map, the specular intensity map, etc.
A material pass in a forward rendered pipeline refers to using the material textures to apply lighting and color to an object. This is the step where we draw part or all of the colors on objects to the scene texture. With forward rendering, this usually means including all of the lighting effects during this pass. There is often only one material pass, but sometimes multiple material passes are done in order to apply part of an effect at a time, as an optimization, or to overcome hardware/software limitations.
A material pass in a deferred rendering pipeline usually refers to the pass where materials are applied. Several "passes" are done in a deferred rendering pipeline. We have a depth pass where we draw all the depths in the scene to a texture, a lighting pass where we draw all the lights to a light buffer texture, a material pass where we draw all of the object colors to a material texture. These multiple textures are then later combined into a final image.
In other words, a material is a collection of textures to be applied to a piece of geometry, and a material pass is where we actually apply some or all of the color and light effects that the material represents to the geometry.
|show 3 more comments|
The term "Material" usually refers to a specific set of surface characteristics, which are used by a lighting model to compute the reflectance at a point on a surface. But if it does, then "Material Pass" doesn't really make sense.
Therefore, let's assume that by "Material", what you really mean is "a visual effect that I would like to produce, using one or more light sources and arbitrary other data." In which case the term "Material Pass" is a single shader that implements some part of this visual effect.
Note that the typical terminology for this "Material Pass" is "Shader Pass" or something of the like, while the term for what you seem to call "Material" is usually "Effect" or "Technique".
An Effect can be achieved by one or more Shader Passes. A Shader pass is a concrete piece of shader code, which has a number of parameters (uniforms/constants depending on the language). It will take certain inputs and produce certain output value(s). Multiple shader passes are composed with blending operations or possibly with direct shader feedback through render-to-texture.