Illumination

Lambert

Perform Lambertian illumination, given ambient and diffuse RGB colors (alpha is ignored), and a light list.

mib_illum_lambert
    color "mib_illum_lambert" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color. The idea is that ambient and diffuse color can be derived from the same subshader result (a texture mapper, for example) and the ambient brightness can be reduced to avoid losing the effect of illumination.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Phong

Perform Phong illumination, given ambient, diffuse, and specular RGB colors, a specular exponent, and a light list.

mib_illum_phong
    color "mib_illum_phong" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        color           "specular",
        scalar          "exponent",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color. The idea is that ambient and diffuse color can be derived from the same subshader result (a texture mapper, for example) and the ambient brightness can be reduced to avoid losing the effect of illumination.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
specular
provides the color of specular highlights.
exponent
controls the width of the specular highlight. Smaller values increase the size.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Ward

Perform Ward illumination, given ambient, diffuse, and glossy RGB colors, two shinyness parameters, two direction vectors, and a light list.

mib_illum_ward
    color "mib_illum_ward" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        color           "glossy",
        scalar          "shiny_u",
        scalar          "shiny_v",
        vector          "u",
        vector          "v",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color. The idea is that ambient and diffuse color can be derived from the same subshader result (a texture mapper, for example) and the ambient brightness can be reduced to avoid losing the effect of illumination.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
glossy
is also added per light. It is the glossy color computed according to Ward's anisotropic glossy reflection model.
shiny_u
shiny_v
controls the width of the glossy highlight in the u and v directions, respectively. Smaller values increase the size of the highlight.
u
v
the brushing directions in the anisotropic material. They must be perpendicular to each other and to the surface normal, and of unit length. Such vectors are generated by the mib_texture_rotate shader intended to drive these input parameters.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Ward with surface derivatives

Perform Ward illumination, given ambient, diffuse, and glossy RGB colors, two shinyness parameters, and a light list. The only difference from mib_illum_ward is that the brushing directions are taken from the surface derivatives.

mib_illum_ward_deriv
    color "mib_illum_ward_deriv" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        color           "glossy",
        scalar          "shiny_u",
        scalar          "shiny_v",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color. The idea is that ambient and diffuse color can be derived from the same subshader result (a texture mapper, for example) and the ambient brightness can be reduced to avoid losing the effect of illumination.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
glossy
is also added per light. It is the glossy color computed according to Ward's anisotropic glossy reflection model.
shiny_u
shiny_v
controls the width of the glossy highlight in the u and v directions, respectively. The u direction is the first derivative of the surface (read from the state), and v is perpendicular. Both u and v are in the plane that is perpendicular to the surface normal.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Cook-Torrance

Perform Cook-Torrance illumination, given ambient, diffuse, and specular RGB colors, a roughness, index of refraction for three wavelengths, and a light list. Cook-Torrance illumination has an off-specular peak and a color shift with angles.

mib_illum_cooktorr
    color "mib_illum_cooktorr" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        color           "specular",
        scalar          "roughness",
        color           "ior",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color. The idea is that ambient and diffuse color can be derived from the same subshader result (a texture mapper, for example) and the ambient brightness can be reduced to avoid losing the effect of illumination.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
specular
is a factor that the reflected color is multiplied with.
roughness
is the average microfacet slope of the surface. It controls the width of the specular highlight.
ior
is the index of refraction of the material at three different wavelengths (red, green, blue). Metals typically have a higher index of refraction than glass. Values must be 1.0 or greater; smaller values are clamped to 1.0.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Blinn

Perform Blinn illumination, which is a like Cook-Torrance illumination but without the color shift with angles. It only requires one index of refraction.

mib_illum_blinn
    color "mib_illum_blinn" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        color           "specular",
        scalar          "roughness",
        scalar          "ior",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color. The idea is that ambient and diffuse color can be derived from the same subshader result (a texture mapper, for example) and the ambient brightness can be reduced to avoid losing the effect of illumination.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
specular
provides the color of specular highlights.
roughness
is the average microfacet slope of the surface. It controls the width of the specular highlight.
ior
is the index of refraction of the material. Metals typically have higher index of refraction than glass.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Hair

Perform illumination on hair geometry similar to Phong. Hair requires specialized shaders because they are not shading regular triangles but procedural flat-ribbon geometry. Note, that special shaders should be used in parameter connections which can deal with the differences in shading or texture mapping on hair geometry.

mib_illum_hair
    color "mib_illum_hair" (
        color           "ambience",
        color           "ambient",
        color           "diffuse",
        color           "specular",
        scalar          "exponent",
        integer         "mode",
        array light     "lights")
ambience
is a multiplier for the ambient color.
ambient
is a constant color offset.
diffuse
is added to the result for each light, after multiplication with the color returned by the light and a weight based on the dot product of the incident ray direction and the light direction.
specular
provides the color of specular highlights.
exponent
controls the width of the specular highlight.
mode
controls which lights to use, see light lists.
lights
is a list of light instances used for light lists.

Light Lists

All illumination shaders above have a mode parameter and a lights parameter to control the set of lights which is used for illumination. Illumination is performed either using the light instances given in the lights parameter, or the light list of the geometry instance to be shaded. Using the light lists assigned to scene objects allows to share a common shader even on objects with different light relations. The lights are used according to the following possible values for the mode parameter:

0
illumination using the lights parameter; if no lights are specified, then using the instance light list; if no instance light list is specified, then using all lights in the scene. This is the default.
1
illumination using the specified lights in inclusive mode, i.e., instances of groups of light instances are evaluated to all light instances in the group
2
illumination using the specified lights in exclusive modes, i.e., using all lights except the specified ones
4
illumination ignoring any specified lights, and using the instance light list. If no instance light list is specified then all light instances in the scene are used.

Copyright (©) 1986-2009 by mental images GmbH