...
Once a RixBxdf
object is obtained, the integrator may invoke the following methods:
RixBxdf::GetEvaluateDomain()
to figure out the domain over which the Bxdf evaluate samples;RixBxdf::GenerateSample()
to generate samples of the bxdf function, one sample for each point of the shading context;RixBxdf::EvaluateSample()
to evaluate the bxdf function, one direction for each point of the shading context;RixBxdf::EvaluateSamplesAtIndex()
to evaluate the bxdf function, one-or-many directions for a given point of the shading context;RixBxdf::EmitLocal()
to retrieve the bxdf's local emission.
...
The EvaluateSamplesAtIndex()
function is very similar to EvaluateSample()
, but is used to evaluate multiple samples at the same surface position and normal, but with different illumination directions (Ln). The inputs are the same as for EvaluateSample()
, except that it has two additional inputs: index
and number of samples numSamples
. index
is used to index into built-in variables such as the normal Nn and viewing direction Vn, and numSamples
is the number of directions (Ln) to evaluate the bxdf for. The functionality of EvaluateSamplesAtIndex()
otherwise is similar to EvaluateSample()
, and exists in order to make sample evaluation more efficient in certain light transport settings.
Evaluation Domain
Bxdfs can help integrators converge more quickly by providing hints about the domain over which they need to be integrated (the full domain being the entire sphere). This is done by the bxdf implementing a RixBxdf::GetEvaluateDomain()
function that returns the appropriate RixBXEvaluateDomain
value. For more information, please see Bxdf Evaluation Domain.
RixOpacity
The renderer will invoke the following methods on RixOpacity
:
...