Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

RenderMan currently supports the following lobes:

  • diffuse lobes (up to 4 lobes)
  • specular lobes (up to 8 lobes)
  • user lobes (up to 12 lobes, with 3 lobes reserved for subsurface scattering)

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 and are named via the following options

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 lobe 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.

...