Page tree

Versions Compared

Key

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

...

The RixBxdfFactory interface defines a shading plugin responsible for creating a RixBxdf object from a shading context (RixShadingContext) and the set of connected patterns (RixPattern).

The RixBxdf interface characterizes the light-scattering behavior (sometimes referred to as material response) for a given point on the surface of an object.

RixBxdfFactory

Integrators (RixIntegrator) uses use RixBxdfFactory objects by invoking RixBxdfFactory::BeginScatter()  to obtain a  RixBxdf,Because a RixBxdf is expected to be a lightweight object that may be created many times over the course of the render, RixBxdfFactory is expected to take advantage of the lightweight instancing services provided by RixShadingPlugin; in particular, BeginScatter() is provided a pointer to an instance data that is created by RixBxdfFactory::CreateInstanceData().

 parameterized by the bxdf's potentially varying input parameters.  RixBxdfFactory::BeginScatter()  is expected to invoke  RixShadingContext::EvalParam() for  to invoke the relevant bxdf parameters. The bxdf acts as a closure, associated with a given shading context.  BeginScatter BeginScatter() will  will typically call a Bxdf constructor which will get the necessary built-in variables such as shading normal (Nn), geometric normal (Ngn), viewing direction (Vn), etc., by calling the RixShadingContext::GetBuiltinVar() function for each variable.

...

Note that RenderMan itself queries parameter information using the RixBxdfFactory::GetParamTable() method, not by reading arg files.