Bxdfs are characterized as a collection of individually sampled lobes. Integrators may request samples from a subset of lobes (e.g. ask for only the diffuse part of the material response). The logic related to bxdf lobes is contained in RixBxdfLobe.h

Diffuse Lobes

Diffuse lobes represent isotropic scattering of light, the appearance of which is largely independent of the viewing direction (V) (RixShadingContext:: k_Vn), but depends on surface normal (N) (RixShadingContext:: k_Nn) and incident light direction (the Bxdf direction parameter usually called Ln).

RenderMan supports up to 4 diffuse lobes.

Specular and Glossy Lobes

Specular lobes represent surfaces whose roughness ranges from wide glossy to mirror-like interaction, the appearance of which is dependent on the viewing direction (V), surface normal (N) and incident light direction (L). Note that perfectly specular lobes (mirror-like) should be marked as discrete (by setting the discrete flag in the lobe constructor, or using SetDiscrete(true)).

RenderMan supports up to 8 specular lobes.

User Lobes

User lobes allow a bxdf to provide lighting-independent material properties to the integrator. For example, user lobes are used to provide a shading albedo, or provide alpha values for compositing.

RenderMan supports up to 12 user lobes. The last three lobes are reserved for subsurface scattering.

Subsurface lobes

To facilitate subsurface scattering and marking rays as subsurface scattering rays, the last 3 of the 12 user lobes are reserved for subsurface scattering. A bxdf that generates a subsurface ray should set the ray's lobeSampled to diffuse transmission and the lobe ID to one of the three special values k_RixBXSubsurfaceLobeId1 .. k_RixBXSubsurfaceLobeId3 defined in RixBxdfLobe.h.

Light Emission

Bxdfs can emit light by overriding the RixBxdf::EmitLocal() method. This local light emission is not considered by the lighting services and is therefore not importance sampled. Local light emission is intended for low intensity emission. If this emission significantly contributes to the lighting of the scene, a proper light source should be used for performance reasons (less noisy images).

Lobe Names

Bxdf lobes are typically retrieved by name using the RixBXLookupLobeByName routine. The names correspond to options set by the user or bridge. The first lobe of each type (diffuse, specular, user) is used as a catch all if node lookup fails. The following lists commonly declared lobe names:

Lobe/OptionCommon Values
lpe:diffuse2
Diffuse,HairDiffuse
lpe:diffuse3
Subsurface
lpe:specular2
Specular,HairSpecularR
lpe:specular3
RoughSpecular,HairSpecularTRT
lpe:specular4
Clearcoat
lpe:specular5
Iridescence
lpe:specular6
Fuzz,HairSpecularGLINTS
lpe:specular7
SingleScatter,HairSpecularTT
lpe:specular8
Glass
lpe:user2
Albedo,DiffuseAlbedo,SubsurfaceAlbedo,HairAlbedo